[llvm] [CodeGen] Do not emit TRAP for `unreachable` after `@llvm.trap` (PR #94570)
Igor Kudrin via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 10 11:37:41 PDT 2024
================
@@ -1836,6 +1837,16 @@ class CallInst : public CallBase {
bool canReturnTwice() const { return hasFnAttr(Attribute::ReturnsTwice); }
void setCanReturnTwice() { addFnAttr(Attribute::ReturnsTwice); }
+ bool isNonContinuableTrap() const {
+ switch (getIntrinsicID()) {
+ case Intrinsic::trap:
+ case Intrinsic::ubsantrap:
+ return !hasFnAttr("trap-func-name");
----------------
igorkudrin wrote:
The replacement function is not necessarily treated as `noreturn`:
```
> clang test.c --target=x86_64 -mllvm -ftrap-function=mytrap -S -o -
...
callq mytrap at PLT
popq %rbp
retq
```
https://github.com/llvm/llvm-project/pull/94570
More information about the llvm-commits
mailing list