diff options
Diffstat (limited to 'llvm/test/Linker')
-rw-r--r-- | llvm/test/Linker/partial-type-refinement-link.ll | 20 | ||||
-rw-r--r-- | llvm/test/Linker/partial-type-refinement.ll | 24 |
2 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/Linker/partial-type-refinement-link.ll b/llvm/test/Linker/partial-type-refinement-link.ll new file mode 100644 index 00000000000..320ef969f83 --- /dev/null +++ b/llvm/test/Linker/partial-type-refinement-link.ll @@ -0,0 +1,20 @@ +; This file is used by first.ll, so it doesn't actually do anything itself +; RUN: true + +%AnalysisResolver = type { i8, %PMDataManager* } +%"DenseMap<P*,AU*>" = type { i64, %"pair<P*,AU*>"*, i64, i64 } +%PMDataManager = type { i8, %PMTopLevelManager*, i8, i8, i8, i8, i8, i64, i8 } +%PMTopLevelManager = type { i8, i8, i8, i8, i8, i8, i8, i8, %"DenseMap<P*,AU*>" } +%P = type { i8, %AnalysisResolver*, i64 } +%PI = type { i8, i8, i8, i8, i8, i8, %"vector<const PI*>", %P* } +%"SmallVImpl<const PI*>" = type { i8, %PI* } +%"_V_base<const PI*>" = type { %"_V_base<const PI*>::_V_impl" } +%"_V_base<const PI*>::_V_impl" = type { %PI*, i8, i8 } +%"pair<P*,AU*>" = type opaque +%"vector<const PI*>" = type { %"_V_base<const PI*>" } + +define void @f(%"SmallVImpl<const PI*>"* %this) { +entry: + %x = getelementptr inbounds %"SmallVImpl<const PI*>"* %this, i64 0, i32 1 + ret void +} diff --git a/llvm/test/Linker/partial-type-refinement.ll b/llvm/test/Linker/partial-type-refinement.ll new file mode 100644 index 00000000000..b995f11533f --- /dev/null +++ b/llvm/test/Linker/partial-type-refinement.ll @@ -0,0 +1,24 @@ +; RUN: llvm-link %s %p/partial-type-refinement-link.ll -S | FileCheck %s +; PR4954 + +; CHECK: load %PI** getelementptr inbounds (%"RegisterP<LowerArrayLength>"* @_ZN3mvmL1XE, i64 0, i32 0, i32 6, i32 0, i32 0, i32 0), align 16 + +%AnalysisResolver = type { i8, %PMDataManager* } +%"DenseMap<P*,AU*>" = type { i64, %"pair<P*,AU*>"*, i64, i64 } +%PMDataManager = type { i8, %PMTopLevelManager*, i8, i8, i8, i8, i8, i64, i8 } +%PMTopLevelManager = type { i8, i8, i8, i8, i8, i8, i8, i8, %"DenseMap<P*,AU*>" } +%P = type { i8, %AnalysisResolver*, i64 } +%PI = type { i8, i8, i8, i8, i8, i8, %"vector<const PI*>", %P* } +%"RegisterP<LowerArrayLength>" = type { %PI } +%"_V_base<const PI*>" = type { %"_V_base<const PI*>::_V_impl" } +%"_V_base<const PI*>::_V_impl" = type { %PI*, i8, i8 } +%"pair<P*,AU*>" = type opaque +%"vector<const PI*>" = type { %"_V_base<const PI*>" } + +@_ZN3mvmL1XE = external global %"RegisterP<LowerArrayLength>" + +define void @__tcf_0() nounwind { +entry: + %0 = load %PI** getelementptr inbounds (%"RegisterP<LowerArrayLength>"* @_ZN3mvmL1XE, i64 0, i32 0, i32 6, i32 0, i32 0, i32 0), align 16 + ret void +} |