; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=x86_64-linux-gnu | FileCheck %s --check-prefixes=ALL,X64 ; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-linux-gnu | FileCheck %s --check-prefixes=ALL,X64 ; RUN: llc < %s -global-isel -global-isel-abort=1 -mtriple=x86_64-linux-gnu | FileCheck %s --check-prefixes=ALL,GISEL-X64 ; RUN: llc < %s -mtriple=i686-linux-gnu | FileCheck %s --check-prefixes=ALL,X86 ; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=i686-linux-gnu | FileCheck %s --check-prefixes=ALL,X86 ; RUN: llc < %s -global-isel -global-isel-abort=1 -mtriple=i686-linux-gnu | FileCheck %s --check-prefixes=ALL,GISEL-X86 declare void @llvm.trap() define void @test_trap() { ; ALL-LABEL: test_trap: ; ALL: # %bb.0: ; ALL-NEXT: ud2 ; ALL-NEXT: ret{{[l|q]}} tail call void @llvm.trap() ret void } define void @test_debugtrap() { ; ALL-LABEL: test_debugtrap: ; ALL: # %bb.0: ; ALL-NEXT: int3 ; ALL-NEXT: ret{{[l|q]}} tail call void @llvm.debugtrap() ret void } define void @test_ubsantrap() { ; ALL-LABEL: test_ubsantrap: ; ALL: # %bb.0: ; ALL-NEXT: ud1l 12(%eax), %eax ; ALL-NEXT: ret{{[l|q]}} call void @llvm.ubsantrap(i8 12) ret void } define void @test_ubsantrap_custom() nounwind { ; X64-LABEL: test_ubsantrap_custom: ; X64: # %bb.0: ; X64-NEXT: pushq %rax ; X64-NEXT: movl $42, %edi ; X64-NEXT: callq guide@PLT ; X64-NEXT: popq %rax ; X64-NEXT: retq ; ; GISEL-X64-LABEL: test_ubsantrap_custom: ; GISEL-X64: # %bb.0: ; GISEL-X64-NEXT: pushq %rax ; GISEL-X64-NEXT: movl $42, %edi ; GISEL-X64-NEXT: callq guide ; GISEL-X64-NEXT: popq %rax ; GISEL-X64-NEXT: retq ; ; X86-LABEL: test_ubsantrap_custom: ; X86: # %bb.0: ; X86-NEXT: subl $12, %esp ; X86-NEXT: movl $42, (%esp) ; X86-NEXT: calll guide ; X86-NEXT: addl $12, %esp ; X86-NEXT: retl ; ; GISEL-X86-LABEL: test_ubsantrap_custom: ; GISEL-X86: # %bb.0: ; GISEL-X86-NEXT: subl $12, %esp ; GISEL-X86-NEXT: movl $42, (%esp) ; GISEL-X86-NEXT: calll guide ; GISEL-X86-NEXT: addl $12, %esp ; GISEL-X86-NEXT: retl call void @llvm.ubsantrap(i8 42) "trap-func-name"="guide" ret void }