diff options
Diffstat (limited to 'llvm/test')
4 files changed, 87 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LowerTypeTests/Inputs/import-alias.yaml b/llvm/test/Transforms/LowerTypeTests/Inputs/import-alias.yaml new file mode 100644 index 00000000000..a5943cb9fd6 --- /dev/null +++ b/llvm/test/Transforms/LowerTypeTests/Inputs/import-alias.yaml @@ -0,0 +1,11 @@ +--- +TypeIdMap: + typeid1: + TTRes: + Kind: AllOnes + SizeM1BitWidth: 7 +WithGlobalValueDeadStripping: false +CfiFunctionDefs: + - f +CfiFunctionDecls: +... diff --git a/llvm/test/Transforms/LowerTypeTests/export-alias.ll b/llvm/test/Transforms/LowerTypeTests/export-alias.ll new file mode 100644 index 00000000000..6e9c074068d --- /dev/null +++ b/llvm/test/Transforms/LowerTypeTests/export-alias.ll @@ -0,0 +1,21 @@ +; RUN: opt -S %s -lowertypetests -lowertypetests-summary-action=export -lowertypetests-read-summary=%S/Inputs/use-typeid1-typeid2.yaml | FileCheck %s +; +; CHECK: @alias1 = weak alias void (), void ()* @f +; CHECK: @alias2 = hidden alias void (), void ()* @f +; CHECK: declare !type !1 void @alias3() +; CHECK-NOT: @alias3 = alias + +target triple = "x86_64-unknown-linux" + +!cfi.functions = !{!0, !2, !3} +!aliases = !{!4, !5, !6} + +!0 = !{!"f", i8 0, !1} +!1 = !{i64 0, !"typeid1"} +!2 = !{!"alias1", i8 1, !1} +; alias2 not included here, this could happen if the only reference to alias2 +; is in a module compiled without cfi-icall +!3 = !{!"alias3", i8 1, !1} +!4 = !{!"alias1", !"f", i8 0, i8 1} +!5 = !{!"alias2", !"f", i8 1, i8 0} +!6 = !{!"alias3", !"not_present", i8 0, i8 0} diff --git a/llvm/test/Transforms/LowerTypeTests/import-alias.ll b/llvm/test/Transforms/LowerTypeTests/import-alias.ll new file mode 100644 index 00000000000..e673da7484c --- /dev/null +++ b/llvm/test/Transforms/LowerTypeTests/import-alias.ll @@ -0,0 +1,30 @@ +; RUN: opt -S %s -lowertypetests -lowertypetests-summary-action=import -lowertypetests-read-summary=%S/Inputs/import-alias.yaml | FileCheck %s +; +; Check that the definitions for @f and @f_alias are removed from this module +; but @g_alias remains. +; +; CHECK: @g_alias = alias void (), void ()* @g +; CHECK: define hidden void @f.cfi +; CHECK: declare void @f() +; CHECK: declare void @f_alias() + +target triple = "x86_64-unknown-linux" + +@f_alias = alias void (), void ()* @f +@g_alias = alias void (), void ()* @g + +; Definition moved to the merged module +define void @f() { + ret void +} + +; Definition not moved to the merged module +define void @g() { + ret void +} + +define void @uses_aliases() { + call void @f_alias() + call void @g_alias() + ret void +} diff --git a/llvm/test/Transforms/ThinLTOBitcodeWriter/function-alias.ll b/llvm/test/Transforms/ThinLTOBitcodeWriter/function-alias.ll new file mode 100644 index 00000000000..119b8219bab --- /dev/null +++ b/llvm/test/Transforms/ThinLTOBitcodeWriter/function-alias.ll @@ -0,0 +1,25 @@ +; RUN: opt -thinlto-bc -o %t %s +; RUN: llvm-modextract -n 1 -o - %t | llvm-dis | FileCheck --check-prefix=CHECK1 %s + +target triple = "x86_64-unknown-linux-gnu" + +define hidden void @Func() !type !0 { + ret void +} + +; CHECK1: !aliases = !{![[A1:[0-9]+]], ![[A2:[0-9]+]], ![[A3:[0-9]+]]} + +; CHECK1: ![[A1]] = !{!"Alias", !"Func", i8 1, i8 0} +; CHECK1: ![[A2]] = !{!"Hidden_Alias", !"Func", i8 1, i8 0} +; CHECK1: ![[A3]] = !{!"Weak_Alias", !"Func", i8 0, i8 1} +@Alias = hidden alias void (), void ()* @Func +@Hidden_Alias = hidden alias void (), void ()* @Func +@Weak_Alias = weak alias void (), void ()* @Func + +@Variable = global i32 0 + +; Only generate summary alias information for aliases to functions +; CHECK1-NOT: Variable_Alias +@Variable_Alias = alias i32, i32* @Variable + +!0 = !{i64 0, !"_ZTSFvvE"} |