diff options
| author | Chandler Carruth <chandlerc@gmail.com> | 2016-12-16 07:31:20 +0000 |
|---|---|---|
| committer | Chandler Carruth <chandlerc@gmail.com> | 2016-12-16 07:31:20 +0000 |
| commit | 05e80d31bddd62fc34a47f9aac275fb0ca896c0a (patch) | |
| tree | a7af0018b9eccbf34ecf30fae7db3c83543a23a4 /llvm/test/CodeGen/PowerPC | |
| parent | a84a840a5618e17347a8694986e1d4ea98bb68b2 (diff) | |
| download | bcm5719-llvm-05e80d31bddd62fc34a47f9aac275fb0ca896c0a.tar.gz bcm5719-llvm-05e80d31bddd62fc34a47f9aac275fb0ca896c0a.zip | |
Revert r289638: [PowerPC] Fix logic dealing with nop after calls (and tail-call eligibility)
This patch appears to result in trampolines in vtables being miscompiled
when they in turn tail call a method.
I've posted some preliminary details about the failure on the thread for
this commit and talked to Hal. He was comfortable going ahead and
reverting until we sort out what is wrong.
llvm-svn: 289928
Diffstat (limited to 'llvm/test/CodeGen/PowerPC')
| -rw-r--r-- | llvm/test/CodeGen/PowerPC/ppc64-blnop.ll | 129 | ||||
| -rw-r--r-- | llvm/test/CodeGen/PowerPC/ppc64-sibcall.ll | 8 |
2 files changed, 4 insertions, 133 deletions
diff --git a/llvm/test/CodeGen/PowerPC/ppc64-blnop.ll b/llvm/test/CodeGen/PowerPC/ppc64-blnop.ll deleted file mode 100644 index 384edf30d12..00000000000 --- a/llvm/test/CodeGen/PowerPC/ppc64-blnop.ll +++ /dev/null @@ -1,129 +0,0 @@ -; RUN: llc < %s -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu | FileCheck %s -; RUN: llc < %s -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 | FileCheck %s -; RUN: llc < %s -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 | FileCheck %s -; RUN: llc < %s -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu | FileCheck %s -; RUN: llc < %s -function-sections -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu | FileCheck %s -check-prefix=CHECK-FS -; RUN: llc < %s -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s -; RUN: llc < %s -function-sections -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu | FileCheck %s -check-prefix=CHECK-FS - -%class.T = type { [2 x i8] } - -define void @e_callee(%class.T* %this, i8* %c) { ret void } -define void @e_caller(%class.T* %this, i8* %c) { - call void @e_callee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: e_caller: -; CHECK: bl e_callee -; CHECK-NOT: nop - -; CHECK-FS-LABEL: e_caller: -; CHECK-FS: bl e_callee -; CHECK-FS-NEXT: nop -} - -define void @e_scallee(%class.T* %this, i8* %c) section "different" { ret void } -define void @e_scaller(%class.T* %this, i8* %c) { - call void @e_scallee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: e_scaller: -; CHECK: bl e_scallee -; CHECK-NEXT: nop -} - -define void @e_s2callee(%class.T* %this, i8* %c) { ret void } -define void @e_s2caller(%class.T* %this, i8* %c) section "different" { - call void @e_s2callee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: e_s2caller: -; CHECK: bl e_s2callee -; CHECK-NEXT: nop -} - -$cd1 = comdat any -$cd2 = comdat any - -define void @e_ccallee(%class.T* %this, i8* %c) comdat($cd1) { ret void } -define void @e_ccaller(%class.T* %this, i8* %c) comdat($cd2) { - call void @e_ccallee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: e_ccaller: -; CHECK: bl e_ccallee -; CHECK-NEXT: nop -} - -$cd = comdat any - -define void @e_c1callee(%class.T* %this, i8* %c) comdat($cd) { ret void } -define void @e_c1caller(%class.T* %this, i8* %c) comdat($cd) { - call void @e_c1callee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: e_c1caller: -; CHECK: bl e_c1callee -; CHECK-NEXT: nop -} - -define weak_odr hidden void @wo_hcallee(%class.T* %this, i8* %c) { ret void } -define void @wo_hcaller(%class.T* %this, i8* %c) { - call void @wo_hcallee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: wo_hcaller: -; CHECK: bl wo_hcallee -; CHECK-NEXT: nop -} - -define weak_odr protected void @wo_pcallee(%class.T* %this, i8* %c) { ret void } -define void @wo_pcaller(%class.T* %this, i8* %c) { - call void @wo_pcallee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: wo_pcaller: -; CHECK: bl wo_pcallee -; CHECK-NEXT: nop -} - -define weak_odr void @wo_callee(%class.T* %this, i8* %c) { ret void } -define void @wo_caller(%class.T* %this, i8* %c) { - call void @wo_callee(%class.T* %this, i8* %c) - ret void - -; CHECK-LABEL: wo_caller: -; CHECK: bl wo_callee -; CHECK-NEXT: nop -} - -define weak protected void @w_pcallee(i8* %ptr) { ret void } -define void @w_pcaller(i8* %ptr) { - call void @w_pcallee(i8* %ptr) - ret void - -; CHECK-LABEL: w_pcaller: -; CHECK: bl w_pcallee -; CHECK-NEXT: nop -} - -define weak hidden void @w_hcallee(i8* %ptr) { ret void } -define void @w_hcaller(i8* %ptr) { - call void @w_hcallee(i8* %ptr) - ret void - -; CHECK-LABEL: w_hcaller: -; CHECK: bl w_hcallee -; CHECK-NEXT: nop -} - -define weak void @w_callee(i8* %ptr) { ret void } -define void @w_caller(i8* %ptr) { - call void @w_callee(i8* %ptr) - ret void - -; CHECK-LABEL: w_caller: -; CHECK: bl w_callee -; CHECK-NEXT: nop -} - diff --git a/llvm/test/CodeGen/PowerPC/ppc64-sibcall.ll b/llvm/test/CodeGen/PowerPC/ppc64-sibcall.ll index 59e54560147..418b7828f1d 100644 --- a/llvm/test/CodeGen/PowerPC/ppc64-sibcall.ll +++ b/llvm/test/CodeGen/PowerPC/ppc64-sibcall.ll @@ -142,7 +142,7 @@ define void @wo_hcaller(%class.T* %this, i8* %c) { ret void ; CHECK-SCO-LABEL: wo_hcaller: -; CHECK-SCO: bl wo_hcallee +; CHECK-SCO: b wo_hcallee } define weak_odr protected void @wo_pcallee(%class.T* %this, i8* %c) { ret void } @@ -151,7 +151,7 @@ define void @wo_pcaller(%class.T* %this, i8* %c) { ret void ; CHECK-SCO-LABEL: wo_pcaller: -; CHECK-SCO: bl wo_pcallee +; CHECK-SCO: b wo_pcallee } define weak_odr void @wo_callee(%class.T* %this, i8* %c) { ret void } @@ -169,7 +169,7 @@ define void @w_pcaller(i8* %ptr) { ret void ; CHECK-SCO-LABEL: w_pcaller: -; CHECK-SCO: bl w_pcallee +; CHECK-SCO: b w_pcallee } define weak hidden void @w_hcallee(i8* %ptr) { ret void } @@ -178,7 +178,7 @@ define void @w_hcaller(i8* %ptr) { ret void ; CHECK-SCO-LABEL: w_hcaller: -; CHECK-SCO: bl w_hcallee +; CHECK-SCO: b w_hcallee } define weak void @w_callee(i8* %ptr) { ret void } |

