summaryrefslogtreecommitdiff
path: root/test/CodeGen/Generic/badCallArgLRLLVM.ll
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2002-09-28 16:51:47 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2002-09-28 16:51:47 +0000
commit0188ce454344a28e468d484bd3865c9cde818fd5 (patch)
tree5832d55fdbb097e755191be383aaed231527cba0 /test/CodeGen/Generic/badCallArgLRLLVM.ll
parent94c408104adf052c7b7f60eb22beb9c766a57431 (diff)
downloadllvm-0188ce454344a28e468d484bd3865c9cde818fd5.tar.gz
llvm-0188ce454344a28e468d484bd3865c9cde818fd5.tar.bz2
llvm-0188ce454344a28e468d484bd3865c9cde818fd5.tar.xz
Regression test for live range bug for call arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3962 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/Generic/badCallArgLRLLVM.ll')
-rw-r--r--test/CodeGen/Generic/badCallArgLRLLVM.ll30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/CodeGen/Generic/badCallArgLRLLVM.ll b/test/CodeGen/Generic/badCallArgLRLLVM.ll
new file mode 100644
index 0000000000..0a29e6de18
--- /dev/null
+++ b/test/CodeGen/Generic/badCallArgLRLLVM.ll
@@ -0,0 +1,30 @@
+; This caused a problem because the argument of a call was defined by
+; the return value of another call that appears later in the code.
+; When processing the first call, the second call has not yet been processed
+; so no LiveRange has been created for its return value.
+;
+; llc dies in UltraSparcRegInfo::suggestRegs4CallArgs() with:
+; ERROR: In call instr, no LR for arg: 0x1009e0740
+;
+implementation ; Functions:
+
+declare int %getInt(int);
+
+int %main(int %argc, sbyte** %argv) {
+bb0: ;[#uses=0]
+ br label %bb2
+
+bb1:
+ %reg222 = call int (int)* %getInt(int %reg218) ;; ARG #1 HAS NO LR
+ %reg110 = add int %reg222, 1
+ %b = setle int %reg110, 0
+ br bool %b, label %bb2, label %bb3
+
+bb2:
+ %reg218 = call int (int)* %getInt(int %argc) ;; THIS CALL NOT YET SEEN
+ br label %bb1
+
+bb3:
+ ret int %reg110
+}
+