reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
; RUN: opt -S %s -lowertypetests | FileCheck %s

; CHECK: @badfileops = internal global %struct.f { void ()* @bad_f, void ()* @bad_f }
; CHECK: @bad_f = internal alias void (), void ()* @.cfi.jumptable
; CHECK: define internal void @bad_f.cfi() !type !0 {
; CHECK-NEXT:  ret void

target triple = "x86_64-unknown-linux"

%struct.f = type { void ()*, void ()* }
@badfileops = internal global %struct.f { void ()* @bad_f, void ()* @bad_f }, align 8

declare i1 @llvm.type.test(i8*, metadata)

define internal void @bad_f() !type !1 {
  ret void
}

define internal fastcc void @do_f() unnamed_addr !type !2 {
  %1 = tail call i1 @llvm.type.test(i8* undef, metadata !"_ZTSFiP4fileP3uioP5ucrediP6threadE"), !nosanitize !3
  ret void
}

!1 = !{i64 0, !"_ZTSFiP4fileP3uioP5ucrediP6threadE"}
!2 = !{i64 0, !"_ZTSFiP6threadiP4fileP3uioliE"}
!3 = !{}