summaryrefslogtreecommitdiff
path: root/test/CodeGen
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2010-04-06 15:52:58 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2010-04-06 15:52:58 +0000
commit9f4a1da9a0a56a0b0a7f8249f34b3cdea6179c41 (patch)
tree0dd020f28a4846707f8d60717d9b2921ea187bd8 /test/CodeGen
parentb5efedaf2ab20d844d5a21cdef76b55acbf4f01c (diff)
Notes
Diffstat (limited to 'test/CodeGen')
-rw-r--r--test/CodeGen/X86/memcpy.ll4
-rw-r--r--test/CodeGen/X86/personality.ll4
-rw-r--r--test/CodeGen/X86/unreachable-loop-sinking.ll30
3 files changed, 34 insertions, 4 deletions
diff --git a/test/CodeGen/X86/memcpy.ll b/test/CodeGen/X86/memcpy.ll
index 24530cd27e4b9..5a3ae77caae1b 100644
--- a/test/CodeGen/X86/memcpy.ll
+++ b/test/CodeGen/X86/memcpy.ll
@@ -2,13 +2,13 @@
declare void @llvm.memcpy.i64(i8*, i8*, i64, i32)
-define i8* @my_memcpy(i8* %a, i8* %b, i64 %n) {
+define i8* @my_memcpy(i8* %a, i8* %b, i64 %n) nounwind {
entry:
tail call void @llvm.memcpy.i64( i8* %a, i8* %b, i64 %n, i32 1 )
ret i8* %a
}
-define i8* @my_memcpy2(i64* %a, i64* %b, i64 %n) {
+define i8* @my_memcpy2(i64* %a, i64* %b, i64 %n) nounwind {
entry:
%tmp14 = bitcast i64* %a to i8*
%tmp25 = bitcast i64* %b to i8*
diff --git a/test/CodeGen/X86/personality.ll b/test/CodeGen/X86/personality.ll
index 5acf04cc06c10..6789bb0c0fbe2 100644
--- a/test/CodeGen/X86/personality.ll
+++ b/test/CodeGen/X86/personality.ll
@@ -38,10 +38,10 @@ declare void @__gxx_personality_v0()
declare void @__cxa_end_catch()
-; X64: Leh_frame_common_begin:
+; X64: Leh_frame_common_begin0:
; X64: .long ___gxx_personality_v0@GOTPCREL+4
-; X32: Leh_frame_common_begin:
+; X32: Leh_frame_common_begin0:
; X32: .long L___gxx_personality_v0$non_lazy_ptr-
; ....
diff --git a/test/CodeGen/X86/unreachable-loop-sinking.ll b/test/CodeGen/X86/unreachable-loop-sinking.ll
new file mode 100644
index 0000000000000..35f69175a86aa
--- /dev/null
+++ b/test/CodeGen/X86/unreachable-loop-sinking.ll
@@ -0,0 +1,30 @@
+; RUN: llc < %s
+; PR6777
+
+; MachineSink shouldn't try to sink code in unreachable blocks, as it's
+; not worthwhile, and there are corner cases which it doesn't handle.
+
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-unknown-linux-gnu"
+
+define double @fn1(i8* %arg, i64 %arg1) {
+Entry:
+ br i1 undef, label %Body, label %Exit
+
+Exit: ; preds = %Brancher7, %Entry
+ ret double undef
+
+Body: ; preds = %Entry
+ br i1 false, label %Brancher7, label %Body3
+
+Body3: ; preds = %Body6, %Body3, %Body
+ br label %Body3
+
+Body6: ; preds = %Brancher7
+ %tmp = fcmp oeq double 0xC04FBB2E40000000, undef ; <i1> [#uses=1]
+ br i1 %tmp, label %Body3, label %Brancher7
+
+Brancher7: ; preds = %Body6, %Body
+ %tmp2 = icmp ult i32 undef, 10 ; <i1> [#uses=1]
+ br i1 %tmp2, label %Body6, label %Exit
+}