diff options
-rw-r--r-- | llvm/lib/Target/Sparc/SparcInstrInfo.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Target/Sparc/SparcInstrInfo.h | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/SPARC/empty-functions.ll | 8 |
3 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/SparcInstrInfo.cpp b/llvm/lib/Target/Sparc/SparcInstrInfo.cpp index 8b2e6bc5f32..6836d8d6f68 100644 --- a/llvm/lib/Target/Sparc/SparcInstrInfo.cpp +++ b/llvm/lib/Target/Sparc/SparcInstrInfo.cpp @@ -37,6 +37,11 @@ SparcInstrInfo::SparcInstrInfo(SparcSubtarget &ST) RI(ST), Subtarget(ST) { } +/// getNoopForMachoTarget - Return the noop instruction to use for a noop. +void SparcInstrInfo::getNoopForMachoTarget(MCInst &NopInst) const { + NopInst.setOpcode(SP::NOP); +} + /// isLoadFromStackSlot - If the specified machine instruction is a direct /// load from a stack slot, return the virtual or physical register number of /// the destination along with the FrameIndex of the loaded stack slot. If diff --git a/llvm/lib/Target/Sparc/SparcInstrInfo.h b/llvm/lib/Target/Sparc/SparcInstrInfo.h index fe93ed7b57c..2c39bbc3000 100644 --- a/llvm/lib/Target/Sparc/SparcInstrInfo.h +++ b/llvm/lib/Target/Sparc/SparcInstrInfo.h @@ -93,6 +93,8 @@ public: const TargetRegisterInfo *TRI) const override; unsigned getGlobalBaseReg(MachineFunction *MF) const; + + void getNoopForMachoTarget(MCInst &NopInst) const override; }; } diff --git a/llvm/test/CodeGen/SPARC/empty-functions.ll b/llvm/test/CodeGen/SPARC/empty-functions.ll new file mode 100644 index 00000000000..92522994cc7 --- /dev/null +++ b/llvm/test/CodeGen/SPARC/empty-functions.ll @@ -0,0 +1,8 @@ +; RUN: llc < %s -mtriple=sparc-unknown-openbsd -disable-fp-elim | FileCheck -check-prefix=CHECK-FP-LABEL %s + +define void @func() { +entry: + unreachable +} +; CHECK-FP-LABEL: {{_?}}func: +; CHECK-FP-LABEL: nop {{[;!]}} avoids zero-length function |