summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorReed Kotler <rkotler@mips.com>2013-11-24 02:53:09 +0000
committerReed Kotler <rkotler@mips.com>2013-11-24 02:53:09 +0000
commitd3b28ebe03149641d8d126891b2b895c778022cb (patch)
treefbdeea3e139e3522a9aedba0d61aff57f8e3c188 /llvm/test
parent336fcd9c61e4cf845860d21ed12d631901b59581 (diff)
downloadbcm5719-llvm-d3b28ebe03149641d8d126891b2b895c778022cb.tar.gz
bcm5719-llvm-d3b28ebe03149641d8d126891b2b895c778022cb.zip
Fix a funny bug I introduced during conversion of ARM constant islands to Mips.
I had to move some code and I moved a declaration forward past it's first use in the function but by nutty coincidence there was another variable of the same name and type and with completely unrelated function that was declared globally in the class so no compilation error ensued. It required some unusual conditions for it to even matter. Caused test case casts.c in test-suite to fail during compilation with a duplicate symbol error. I would have noticed it during final code review for this port. llvm-svn: 195565
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/Mips/ci2.ll39
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Mips/ci2.ll b/llvm/test/CodeGen/Mips/ci2.ll
new file mode 100644
index 00000000000..7187f0c7588
--- /dev/null
+++ b/llvm/test/CodeGen/Mips/ci2.ll
@@ -0,0 +1,39 @@
+; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -relocation-model=static -mips16-constant-islands < %s | FileCheck %s -check-prefix=constisle
+
+@i = common global i32 0, align 4
+@b = common global i32 0, align 4
+@l = common global i32 0, align 4
+
+; Function Attrs: nounwind
+define void @foo() #0 {
+entry:
+ store i32 305419896, i32* @i, align 4
+ %0 = load i32* @b, align 4
+ %tobool = icmp ne i32 %0, 0
+ br i1 %tobool, label %if.then, label %if.else
+
+if.then: ; preds = %entry
+ store i32 10, i32* @b, align 4
+ br label %if.end
+
+if.else: ; preds = %entry
+ store i32 20, i32* @b, align 4
+ br label %if.end
+
+if.end: ; preds = %if.else, %if.then
+ call void asm sideeffect ".space 100000", ""() #1, !srcloc !1
+ store i32 305419896, i32* @l, align 4
+ ret void
+; constisle: $CPI0_1:
+; constisle .4byte 305419896 # 0x12345678
+; constisle #APP
+; constisle .space 100000
+; constisle #NO_APP
+; constisle $CPI0_0:
+; constisle .4byte 305419896 # 0x12345678
+}
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { nounwind }
+
+!1 = metadata !{i32 103}
OpenPOWER on IntegriCloud