summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/CBackend
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-07-18 18:43:12 +0000
committerDan Gohman <gohman@apple.com>2008-07-18 18:43:12 +0000
commit44dfd7bf56c0a25d4e069d38109325ab189dc6ce (patch)
tree45c540b2d46f5b5dbc1be98e940319e1989a7214 /llvm/test/CodeGen/CBackend
parent597bd1633e336a9cffcb894a6db97bb05b776447 (diff)
downloadbcm5719-llvm-44dfd7bf56c0a25d4e069d38109325ab189dc6ce.tar.gz
bcm5719-llvm-44dfd7bf56c0a25d4e069d38109325ab189dc6ce.zip
In the CBackend, use casts to force integer add, subtract, and
multiply to be done as unsigned, so that they have well defined behavior on overflow. This fixes PR2408. llvm-svn: 53767
Diffstat (limited to 'llvm/test/CodeGen/CBackend')
-rw-r--r--llvm/test/CodeGen/CBackend/2007-02-23-NameConflicts.ll3
-rw-r--r--llvm/test/CodeGen/CBackend/pr2408.ll12
2 files changed, 14 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/CBackend/2007-02-23-NameConflicts.ll b/llvm/test/CodeGen/CBackend/2007-02-23-NameConflicts.ll
index 2bc4d516808..eb5cb864465 100644
--- a/llvm/test/CodeGen/CBackend/2007-02-23-NameConflicts.ll
+++ b/llvm/test/CodeGen/CBackend/2007-02-23-NameConflicts.ll
@@ -1,7 +1,8 @@
; PR1164
; RUN: llvm-as < %s | llc -march=c | grep {llvm_cbe_A = \\*llvm_cbe_G;}
; RUN: llvm-as < %s | llc -march=c | grep {llvm_cbe_B = \\*(&ltmp_0_1);}
-; RUN: llvm-as < %s | llc -march=c | grep {return (llvm_cbe_A + llvm_cbe_B);}
+; RUN: llvm-as < %s | llc -march=c | grep {return (((unsigned int )(((unsigned int )llvm_cbe_A) + ((unsigned int )llvm_cbe_B))));}
+
@G = global i32 123
@ltmp_0_1 = global i32 123
diff --git a/llvm/test/CodeGen/CBackend/pr2408.ll b/llvm/test/CodeGen/CBackend/pr2408.ll
new file mode 100644
index 00000000000..a16f91bfad8
--- /dev/null
+++ b/llvm/test/CodeGen/CBackend/pr2408.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc -march=c | grep {\\* ((unsigned int )}
+; PR2408
+
+define i32 @a(i32 %a) {
+entry:
+ %shr = ashr i32 %a, 0 ; <i32> [#uses=1]
+ %shr2 = ashr i32 2, 0 ; <i32> [#uses=1]
+ %mul = mul i32 %shr, %shr2 ; <i32> [#uses=1]
+ %shr4 = ashr i32 2, 0 ; <i32> [#uses=1]
+ %div = sdiv i32 %mul, %shr4 ; <i32> [#uses=1]
+ ret i32 %div
+}
OpenPOWER on IntegriCloud