diff options
author | Vikram S. Adve <vadve@cs.uiuc.edu> | 2002-09-28 16:51:47 +0000 |
---|---|---|
committer | Vikram S. Adve <vadve@cs.uiuc.edu> | 2002-09-28 16:51:47 +0000 |
commit | 0188ce454344a28e468d484bd3865c9cde818fd5 (patch) | |
tree | 5832d55fdbb097e755191be383aaed231527cba0 /test/CodeGen/Generic | |
parent | 94c408104adf052c7b7f60eb22beb9c766a57431 (diff) | |
download | external_llvm-0188ce454344a28e468d484bd3865c9cde818fd5.zip external_llvm-0188ce454344a28e468d484bd3865c9cde818fd5.tar.gz external_llvm-0188ce454344a28e468d484bd3865c9cde818fd5.tar.bz2 |
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')
-rw-r--r-- | test/CodeGen/Generic/badCallArgLRLLVM.ll | 30 |
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 0000000..0a29e6d --- /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 +} + |