From efdbf7b815b7c8fa161819e87050154d62b3d146 Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Fri, 3 Apr 2026 15:12:49 -0500 Subject: [PATCH] [Hexagon] Use trap0(#0xDB) for debugtrap instead of brkpt (#189446) The brkpt instruction is intended for the in-silicon debugger (ISDB). When ISDB is not enabled, brkpt is treated as a NOP, so __builtin_debugtrap() would silently do nothing in user-mode Linux processes. Use trap0(#0xDB) instead. --- llvm/lib/Target/Hexagon/HexagonPatterns.td | 2 +- llvm/test/CodeGen/Hexagon/trap-crash.ll | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/Hexagon/HexagonPatterns.td b/llvm/lib/Target/Hexagon/HexagonPatterns.td index 3f836e8c1dbe..0c9650585b61 100644 --- a/llvm/lib/Target/Hexagon/HexagonPatterns.td +++ b/llvm/lib/Target/Hexagon/HexagonPatterns.td @@ -3461,7 +3461,7 @@ def HexagonBARRIER: SDNode<"HexagonISD::BARRIER", SDTNone, [SDNPHasChain]>; def: Pat<(HexagonBARRIER), (Y2_barrier)>; def: Pat<(trap), (PS_crash)>; -def: Pat<(debugtrap), (Y2_break)>; +def: Pat<(debugtrap), (J2_trap0 0xDB)>; // Read cycle counter. def : Pat<(i64 (readcyclecounter)), (PS_readcr64 UPCYCLE)>; diff --git a/llvm/test/CodeGen/Hexagon/trap-crash.ll b/llvm/test/CodeGen/Hexagon/trap-crash.ll index c19f90c297ab..7ff3db1e75c4 100644 --- a/llvm/test/CodeGen/Hexagon/trap-crash.ll +++ b/llvm/test/CodeGen/Hexagon/trap-crash.ll @@ -14,7 +14,7 @@ entry: } ; CHECK-LABEL: f1 -; CHECK: brkpt +; CHECK: trap0(#219) define i32 @f1() noreturn nounwind { entry: tail call void @llvm.debugtrap()