summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2014-11-12 23:01:24 +0000
committerBob Wilson <bob.wilson@apple.com>2014-11-12 23:01:24 +0000
commitb90f66ba9d0f2ae2ab7a2ac56e3113d6caa2faad (patch)
tree658476527299026e3c0b8d10ef8e825b9e64dcb3 /lib
parentbdfc9db9d74625ef1065b161774800b6323026ed (diff)
PR21518: Use unsigned arithmetic for trapping add/sub functions.
The code in {add,sub}v.i3 routines does not trap when it should, because it performs the actual add/subtract operation in signed arithmetic, rather than unsigned. Patch by Francois-Xavie Coudert! git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@221826 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/builtins/addvdi3.c2
-rw-r--r--lib/builtins/addvsi3.c2
-rw-r--r--lib/builtins/addvti3.c2
-rw-r--r--lib/builtins/subvdi3.c2
-rw-r--r--lib/builtins/subvsi3.c2
-rw-r--r--lib/builtins/subvti3.c2
6 files changed, 6 insertions, 6 deletions
diff --git a/lib/builtins/addvdi3.c b/lib/builtins/addvdi3.c
index db45a27f0..0da389456 100644
--- a/lib/builtins/addvdi3.c
+++ b/lib/builtins/addvdi3.c
@@ -21,7 +21,7 @@
COMPILER_RT_ABI di_int
__addvdi3(di_int a, di_int b)
{
- di_int s = a + b;
+ di_int s = (du_int) a + (du_int) b;
if (b >= 0)
{
if (s < a)
diff --git a/lib/builtins/addvsi3.c b/lib/builtins/addvsi3.c
index 81f515cd7..94ca726f4 100644
--- a/lib/builtins/addvsi3.c
+++ b/lib/builtins/addvsi3.c
@@ -21,7 +21,7 @@
COMPILER_RT_ABI si_int
__addvsi3(si_int a, si_int b)
{
- si_int s = a + b;
+ si_int s = (su_int) a + (su_int) b;
if (b >= 0)
{
if (s < a)
diff --git a/lib/builtins/addvti3.c b/lib/builtins/addvti3.c
index 79b9611f9..c224de60a 100644
--- a/lib/builtins/addvti3.c
+++ b/lib/builtins/addvti3.c
@@ -23,7 +23,7 @@
COMPILER_RT_ABI ti_int
__addvti3(ti_int a, ti_int b)
{
- ti_int s = a + b;
+ ti_int s = (tu_int) a + (tu_int) b;
if (b >= 0)
{
if (s < a)
diff --git a/lib/builtins/subvdi3.c b/lib/builtins/subvdi3.c
index 0f1f924ef..71fc70ffa 100644
--- a/lib/builtins/subvdi3.c
+++ b/lib/builtins/subvdi3.c
@@ -21,7 +21,7 @@
COMPILER_RT_ABI di_int
__subvdi3(di_int a, di_int b)
{
- di_int s = a - b;
+ di_int s = (du_int) a - (du_int) b;
if (b >= 0)
{
if (s > a)
diff --git a/lib/builtins/subvsi3.c b/lib/builtins/subvsi3.c
index ec4594c9f..e6c0fb688 100644
--- a/lib/builtins/subvsi3.c
+++ b/lib/builtins/subvsi3.c
@@ -21,7 +21,7 @@
COMPILER_RT_ABI si_int
__subvsi3(si_int a, si_int b)
{
- si_int s = a - b;
+ si_int s = (su_int) a - (su_int) b;
if (b >= 0)
{
if (s > a)
diff --git a/lib/builtins/subvti3.c b/lib/builtins/subvti3.c
index 8f1171430..a6804d2d7 100644
--- a/lib/builtins/subvti3.c
+++ b/lib/builtins/subvti3.c
@@ -23,7 +23,7 @@
COMPILER_RT_ABI ti_int
__subvti3(ti_int a, ti_int b)
{
- ti_int s = a - b;
+ ti_int s = (tu_int) a - (tu_int) b;
if (b >= 0)
{
if (s > a)