2016-03-02 06:53:02 +08:00
; RUN: opt < %s -sample-profile -sample-profile-file=%S/Inputs/inline-combine.prof -S | FileCheck %s
%"class.llvm::FoldingSetNodeID" = type { %"class.llvm::SmallVector" }
%"class.llvm::SmallVector" = type { %"class.llvm::SmallVectorImpl.base" , %"struct.llvm::SmallVectorStorage" }
%"class.llvm::SmallVectorImpl.base" = type { %"class.llvm::SmallVectorTemplateBase.base" }
%"class.llvm::SmallVectorTemplateBase.base" = type { %"class.llvm::SmallVectorTemplateCommon.base" }
%"class.llvm::SmallVectorTemplateCommon.base" = type < { %"class.llvm::SmallVectorBase" , %"struct.llvm::AlignedCharArrayUnion" } >
%"class.llvm::SmallVectorBase" = type { i8 * , i8 * , i8 * }
%"struct.llvm::AlignedCharArrayUnion" = type { %"struct.llvm::AlignedCharArray" }
%"struct.llvm::AlignedCharArray" = type { [ 4 x i8 ] }
%"struct.llvm::SmallVectorStorage" = type { [ 31 x %"struct.llvm::AlignedCharArrayUnion" ] }
%"class.llvm::SmallVectorImpl" = type { %"class.llvm::SmallVectorTemplateBase.base" , [ 4 x i8 ] }
$ f o o = comdat any
$ b a r = comdat any
define void @foo ( %"class.llvm::FoldingSetNodeID" * %this ) comdat align 2 !dbg !3 {
%1 = alloca %"class.llvm::FoldingSetNodeID" * , align 8
store %"class.llvm::FoldingSetNodeID" * %this , %"class.llvm::FoldingSetNodeID" * * %1 , align 8
%2 = load %"class.llvm::FoldingSetNodeID" * , %"class.llvm::FoldingSetNodeID" * * %1 , align 8
%3 = getelementptr inbounds %"class.llvm::FoldingSetNodeID" , %"class.llvm::FoldingSetNodeID" * %2 , i32 0 , i32 0
; the call should have been inlined after sample-profile pass
; CHECK-NOT: call
call void bitcast ( void ( %"class.llvm::SmallVectorImpl" * ) * @bar to void ( %"class.llvm::SmallVector" * ) * ) ( %"class.llvm::SmallVector" * %3 ) , !dbg !7
ret void
}
define void @bar ( %"class.llvm::SmallVectorImpl" * %this ) comdat align 2 !dbg !8 {
ret void
}
!llvm.module.flags = ! { !0 , !1 }
!llvm.ident = ! { !2 }
2016-04-12 02:53:27 +08:00
!llvm.dbg.cu = ! { !9 }
2016-03-02 06:53:02 +08:00
!0 = ! { i32 2 , !"Dwarf Version" , i32 4 }
!1 = ! { i32 1 , !"Debug Info Version" , i32 3 }
!2 = ! { !"clang version 3.5 " }
!3 = distinct !DISubprogram ( name: "foo" , scope: !4 , file: !4 , line: 3 , type: !5 , isLocal: false , isDefinition: true , scopeLine: 3 , virtualIndex: 6 , flags: D I F l a g P r o t o t y p e d , isOptimized: false , variables: !6 )
!4 = !DIFile ( filename: "test.cc" , directory: "." )
!5 = !DISubroutineType ( types: !6 )
!6 = ! { }
!7 = !DILocation ( line: 4 , scope: !3 )
!8 = distinct !DISubprogram ( name: "bar" , scope: !4 , file: !4 , line: 7 , type: !5 , isLocal: false , isDefinition: true , scopeLine: 7 , virtualIndex: 6 , flags: D I F l a g P r o t o t y p e d , isOptimized: false , variables: !6 )
2016-04-12 02:53:27 +08:00
!9 = distinct !DICompileUnit ( language: D W _ L A N G _ C _ p l u s _ p l u s , producer: "clang version 3.5 " , isOptimized: false , emissionKind: F u l l D e b u g , file: !4 , subprograms: ! { !3 , !8 } )