diff options
author | Stephen Hines <srhines@google.com> | 2014-02-11 20:01:10 -0800 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-02-11 20:01:10 -0800 |
commit | ce9904c6ea8fd669978a8eefb854b330eb9828ff (patch) | |
tree | 2418ee2e96ea220977c8fb74959192036ab5b133 /test/CodeGen/Mips/lazy-binding.ll | |
parent | c27b10b198c1d9e9b51f2303994313ec2778edd7 (diff) | |
parent | dbb832b83351cec97b025b61c26536ef50c3181c (diff) | |
download | external_llvm-ce9904c6ea8fd669978a8eefb854b330eb9828ff.zip external_llvm-ce9904c6ea8fd669978a8eefb854b330eb9828ff.tar.gz external_llvm-ce9904c6ea8fd669978a8eefb854b330eb9828ff.tar.bz2 |
Merge remote-tracking branch 'upstream/release_34' into merge-20140211
Conflicts:
lib/Linker/LinkModules.cpp
lib/Support/Unix/Signals.inc
Change-Id: Ia54f291fa5dc828052d2412736e8495c1282aa64
Diffstat (limited to 'test/CodeGen/Mips/lazy-binding.ll')
-rw-r--r-- | test/CodeGen/Mips/lazy-binding.ll | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/CodeGen/Mips/lazy-binding.ll b/test/CodeGen/Mips/lazy-binding.ll new file mode 100644 index 0000000..839155a --- /dev/null +++ b/test/CodeGen/Mips/lazy-binding.ll @@ -0,0 +1,41 @@ +; RUN: llc -march=mipsel < %s | FileCheck %s + +; CHECK-LABEL: foo6: +; CHECK: %while.body +; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) +; CHECK: jalr $25 +; CHECK: %while.end + +define void @foo6(i32 %n) { +entry: + %tobool1 = icmp eq i32 %n, 0 + br i1 %tobool1, label %while.end, label %while.body + +while.body: ; preds = %entry, %while.body + %n.addr.02 = phi i32 [ %dec, %while.body ], [ %n, %entry ] + %dec = add nsw i32 %n.addr.02, -1 + tail call void @foo2() + %tobool = icmp eq i32 %dec, 0 + br i1 %tobool, label %while.end, label %while.body + +while.end: ; preds = %while.body, %entry + ret void +} + +declare void @foo2() + +; CHECK-LABEL: foo1: +; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) +; CHECK: jalr $25 +; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) +; CHECK: jalr $25 +; CHECK: lw $25, %call16(foo2)(${{[0-9]+}}) +; CHECK: jalr $25 + +define void @foo1() { +entry: + tail call void @foo2() + tail call void @foo2() + tail call void @foo2() + ret void +} |