summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp32
-rw-r--r--llvm/lib/Target/Hexagon/HexagonPatterns.td2
-rw-r--r--llvm/lib/Target/Hexagon/HexagonPseudo.td5
3 files changed, 1 insertions, 38 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
index 68e4adec081..b0b029682bf 100644
--- a/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
@@ -1313,38 +1313,6 @@ bool HexagonInstrInfo::expandPostRAPseudo(MachineInstr &MI) const {
return true;
}
- case Hexagon::PS_crash: {
- // Generate a misaligned load that is guaranteed to cause a crash.
- class CrashPseudoSourceValue : public PseudoSourceValue {
- public:
- CrashPseudoSourceValue(const TargetInstrInfo &TII)
- : PseudoSourceValue(TargetCustom, TII) {}
-
- bool isConstant(const MachineFrameInfo *) const override {
- return false;
- }
- bool isAliased(const MachineFrameInfo *) const override {
- return false;
- }
- bool mayAlias(const MachineFrameInfo *) const override {
- return false;
- }
- void printCustom(raw_ostream &OS) const override {
- OS << "MisalignedCrash";
- }
- };
-
- static const CrashPseudoSourceValue CrashPSV(*this);
- MachineMemOperand *MMO = MF.getMachineMemOperand(
- MachinePointerInfo(&CrashPSV),
- MachineMemOperand::MOLoad | MachineMemOperand::MOVolatile, 8, 1);
- BuildMI(MBB, MI, DL, get(Hexagon::PS_loadrdabs), Hexagon::D13)
- .addImm(0xBADC0FEE) // Misaligned load.
- .addMemOperand(MMO);
- MBB.erase(MI);
- break;
- }
-
case Hexagon::PS_tailcall_i:
MI.setDesc(get(Hexagon::J2_jump));
return true;
diff --git a/llvm/lib/Target/Hexagon/HexagonPatterns.td b/llvm/lib/Target/Hexagon/HexagonPatterns.td
index 9a7fda37cd4..5c709708f8f 100644
--- a/llvm/lib/Target/Hexagon/HexagonPatterns.td
+++ b/llvm/lib/Target/Hexagon/HexagonPatterns.td
@@ -3081,7 +3081,7 @@ def: Pat<(HexagonALLOCA I32:$Rs, (i32 imm:$A)),
def HexagonBARRIER: SDNode<"HexagonISD::BARRIER", SDTNone, [SDNPHasChain]>;
def: Pat<(HexagonBARRIER), (Y2_barrier)>;
-def: Pat<(trap), (PS_crash)>;
+def: Pat<(trap), (J2_trap0 (i32 0))>;
// Read cycle counter.
def SDTInt64Leaf: SDTypeProfile<1, 0, [SDTCisVT<0, i64>]>;
diff --git a/llvm/lib/Target/Hexagon/HexagonPseudo.td b/llvm/lib/Target/Hexagon/HexagonPseudo.td
index 7dd25d7d93d..50900d8cd25 100644
--- a/llvm/lib/Target/Hexagon/HexagonPseudo.td
+++ b/llvm/lib/Target/Hexagon/HexagonPseudo.td
@@ -559,8 +559,3 @@ defm PS_storerh : NewCircularStore<IntRegs, HalfWordAccess>;
defm PS_storerf : NewCircularStore<IntRegs, HalfWordAccess>;
defm PS_storeri : NewCircularStore<IntRegs, WordAccess>;
defm PS_storerd : NewCircularStore<DoubleRegs, WordAccess>;
-
-// A pseudo that generates a runtime crash. This is used to implement
-// __builtin_trap.
-let hasSideEffects = 1, isPseudo = 1, isCodeGenOnly = 1, isSolo = 1 in
-def PS_crash: InstHexagon<(outs), (ins), "", [], "", PSEUDO, TypePSEUDO>;
OpenPOWER on IntegriCloud