diff options
author | Akira Hatanaka <ahatanak@gmail.com> | 2011-05-04 17:54:27 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanak@gmail.com> | 2011-05-04 17:54:27 +0000 |
commit | 6b7588e6c4f6f1a9ab2b5182fafaa95eeb56ca8d (patch) | |
tree | ce8641b51bd329cebd7bb0043678e9a43d1f3f38 /test | |
parent | 597a7664e1bbe2ea5f757eb6e853bd1d2fe98d6c (diff) | |
download | external_llvm-6b7588e6c4f6f1a9ab2b5182fafaa95eeb56ca8d.zip external_llvm-6b7588e6c4f6f1a9ab2b5182fafaa95eeb56ca8d.tar.gz external_llvm-6b7588e6c4f6f1a9ab2b5182fafaa95eeb56ca8d.tar.bz2 |
Prevent instructions using $gp from being placed between a jalr and the instruction that restores the clobbered $gp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130847 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/Mips/gprestore.ll | 35 | ||||
-rw-r--r-- | test/CodeGen/Mips/internalfunc.ll | 2 |
2 files changed, 36 insertions, 1 deletions
diff --git a/test/CodeGen/Mips/gprestore.ll b/test/CodeGen/Mips/gprestore.ll new file mode 100644 index 0000000..0e69a7b --- /dev/null +++ b/test/CodeGen/Mips/gprestore.ll @@ -0,0 +1,35 @@ +; RUN: llc -march=mips < %s | FileCheck %s + +@p = external global i32 +@q = external global i32 +@r = external global i32 + +define void @f0() nounwind { +entry: +; CHECK: jalr +; CHECK-NOT: got({{.*}})($gp) +; CHECK: lw $gp +; CHECK: jalr +; CHECK-NOT: got({{.*}})($gp) +; CHECK: lw $gp +; CHECK: jalr +; CHECK-NOT: got({{.*}})($gp) +; CHECK: lw $gp + tail call void (...)* @f1() nounwind + %tmp = load i32* @p, align 4, !tbaa !0 + tail call void @f2(i32 %tmp) nounwind + %tmp1 = load i32* @q, align 4, !tbaa !0 + %tmp2 = load i32* @r, align 4, !tbaa !0 + tail call void @f3(i32 %tmp1, i32 %tmp2) nounwind + ret void +} + +declare void @f1(...) + +declare void @f2(i32) + +declare void @f3(i32, i32) + +!0 = metadata !{metadata !"int", metadata !1} +!1 = metadata !{metadata !"omnipotent char", metadata !2} +!2 = metadata !{metadata !"Simple C/C++ TBAA", null} diff --git a/test/CodeGen/Mips/internalfunc.ll b/test/CodeGen/Mips/internalfunc.ll index fdfa01a..50d0993 100644 --- a/test/CodeGen/Mips/internalfunc.ll +++ b/test/CodeGen/Mips/internalfunc.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -march=mips | FileCheck %s +; RUN: llc < %s -march=mipsel -mcpu=4ke | FileCheck %s @caller.sf1 = internal unnamed_addr global void (...)* null, align 4 @gf1 = external global void (...)* |