Skip to content

Instantly share code, notes, and snippets.

@nickdesaulniers
Last active December 21, 2021 22:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nickdesaulniers/e13f16a0d98ce59afbe795298827e6fe to your computer and use it in GitHub Desktop.
Save nickdesaulniers/e13f16a0d98ce59afbe795298827e6fe to your computer and use it in GitHub Desktop.
diff of llvm/lib/Target/PowerPC/PPCISelLowering.cpp
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index d6ee6a9d6525..4ca72f819301 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -546,11 +546,13 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
setOperationAction(ISD::GlobalAddress, MVT::i32, Custom);
setOperationAction(ISD::GlobalTLSAddress, MVT::i32, Custom);
setOperationAction(ISD::BlockAddress, MVT::i32, Custom);
+ setOperationAction(ISD::TargetBlockAddress, MVT::i32, Custom);
setOperationAction(ISD::ConstantPool, MVT::i32, Custom);
setOperationAction(ISD::JumpTable, MVT::i32, Custom);
setOperationAction(ISD::GlobalAddress, MVT::i64, Custom);
setOperationAction(ISD::GlobalTLSAddress, MVT::i64, Custom);
setOperationAction(ISD::BlockAddress, MVT::i64, Custom);
+ setOperationAction(ISD::TargetBlockAddress, MVT::i64, Custom);
setOperationAction(ISD::ConstantPool, MVT::i64, Custom);
setOperationAction(ISD::JumpTable, MVT::i64, Custom);
@@ -11027,6 +11029,7 @@ SDValue PPCTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
switch (Op.getOpcode()) {
default: llvm_unreachable("Wasn't expecting to be able to lower this!");
case ISD::ConstantPool: return LowerConstantPool(Op, DAG);
+ case ISD::TargetBlockAddress:
case ISD::BlockAddress: return LowerBlockAddress(Op, DAG);
case ISD::GlobalAddress: return LowerGlobalAddress(Op, DAG);
case ISD::GlobalTLSAddress: return LowerGlobalTLSAddress(Op, DAG);
$ llvm-lit -vv llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll
-- Testing: 1 tests, 1 workers --
FAIL: LLVM :: CodeGen/PowerPC/ppc64-inlineasm-clobber.ll (1 of 1)
******************** TEST 'LLVM :: CodeGen/PowerPC/ppc64-inlineasm-clobber.ll' FAILED ********************
Script:
--
: 'RUN: at line 2'; /android0/llvm-project/llvm/build/bin/llc -mtriple=powerpc64le-unknown-linux-unknown -verify-machineinstrs /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll -ppc-asm-full-reg-names -o - | /android0/llvm-project/llvm/build/bin/FileCheck /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll --check-prefix=PPC64LE
: 'RUN: at line 4'; /android0/llvm-project/llvm/build/bin/llc -mtriple=powerpc64-unknown-linux-unknown -verify-machineinstrs /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll -ppc-asm-full-reg-names -o - | /android0/llvm-project/llvm/build/bin/FileCheck /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll --check-prefix=PPC64BE
--
Exit Code: 2
Command Output (stderr):
--
+ : 'RUN: at line 2'
+ /android0/llvm-project/llvm/build/bin/llc -mtriple=powerpc64le-unknown-linux-unknown -verify-machineinstrs /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll -ppc-asm-full-reg-names -o -
+ /android0/llvm-project/llvm/build/bin/FileCheck /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll --check-prefix=PPC64LE
Overran sorted position:
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
Checking if this is due to cycles
Detected cycle in SelectionDAG
Offending node:
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t20: i64,ch = PPCISD::TOC_ENTRY<(load (s64) from got)> t20, Register:i64 $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
t19: i64 = Register $x2
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: /android0/llvm-project/llvm/build/bin/llc -mtriple=powerpc64le-unknown-linux-unknown -verify-machineinstrs /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll -ppc-asm-full-reg-names -o -
1. Running pass 'Function Pass Manager' on module '/android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll'.
2. Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@ClobberLR_BR'
#0 0x00000000033456d3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/android0/llvm-project/llvm/build/bin/llc+0x33456d3)
#1 0x000000000334348e llvm::sys::RunSignalHandlers() (/android0/llvm-project/llvm/build/bin/llc+0x334348e)
#2 0x0000000003345b9f SignalHandler(int) Signals.cpp:0:0
#3 0x00007fbad350f8e0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x138e0)
#4 0x00007fbad2fa7e71 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
#5 0x00007fbad2f91536 abort ./stdlib/abort.c:81:7
#6 0x0000000003179497 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#7 0x0000000003179382 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#8 0x0000000003179382 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#9 0x0000000003179382 checkForCyclesHelper(llvm::SDNode const*, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SmallPtrSetImpl<llvm::SDNode const*>&, llvm::SelectionDAG const*) SelectionDAG.cpp:0:0
#10 0x00000000031734b1 llvm::checkForCycles(llvm::SDNode const*, llvm::SelectionDAG const*, bool) (/android0/llvm-project/llvm/build/bin/llc+0x31734b1)
#11 0x00000000031732e7 llvm::SelectionDAG::AssignTopologicalOrder() (/android0/llvm-project/llvm/build/bin/llc+0x31732e7)
#12 0x000000000318c4ff llvm::SelectionDAGISel::DoInstructionSelection() (/android0/llvm-project/llvm/build/bin/llc+0x318c4ff)
#13 0x000000000318b7a2 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/android0/llvm-project/llvm/build/bin/llc+0x318b7a2)
#14 0x0000000003189067 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/android0/llvm-project/llvm/build/bin/llc+0x3189067)
#15 0x00000000031858bc llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/android0/llvm-project/llvm/build/bin/llc+0x31858bc)
#16 0x000000000205625f (anonymous namespace)::PPCDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) PPCISelDAGToDAG.cpp:0:0
#17 0x000000000262b40d llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/android0/llvm-project/llvm/build/bin/llc+0x262b40d)
#18 0x0000000002ae6a98 llvm::FPPassManager::runOnFunction(llvm::Function&) (/android0/llvm-project/llvm/build/bin/llc+0x2ae6a98)
#19 0x0000000002aeef41 llvm::FPPassManager::runOnModule(llvm::Module&) (/android0/llvm-project/llvm/build/bin/llc+0x2aeef41)
#20 0x0000000002ae75e1 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/android0/llvm-project/llvm/build/bin/llc+0x2ae75e1)
#21 0x00000000019104fa main (/android0/llvm-project/llvm/build/bin/llc+0x19104fa)
#22 0x00007fbad2f92e4a __libc_start_main ./csu/../csu/libc-start.c:314:16
#23 0x000000000190db7a _start (/android0/llvm-project/llvm/build/bin/llc+0x190db7a)
FileCheck error: '<stdin>' is empty.
FileCheck command line: /android0/llvm-project/llvm/build/bin/FileCheck /android0/llvm-project/llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll --check-prefix=PPC64LE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment