Commit fa51fdfc authored by Mehdi Amini's avatar Mehdi Amini
Browse files

Merge r287453 in 3.9.1 : [ThinLTO] Fix crash when importing an opaque type

See: http://llvm.org/PR31072
llvm-svn: 287805
parent 57e0aad3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1336,7 +1336,7 @@ bool IRMover::IdentifiedStructTypeSet::hasType(StructType *Ty) {

IRMover::IRMover(Module &M) : Composite(M) {
  TypeFinder StructTypes;
  StructTypes.run(M, true);
  StructTypes.run(M, /* OnlyNamed */ false);
  for (StructType *Ty : StructTypes) {
    if (Ty->isOpaque())
      IdentifiedStructTypes.addOpaque(Ty);
+15 −0
Original line number Diff line number Diff line
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11.0"

%0 = type { i8 }

%a = type { %0 * }

define void @bar(%a *) {
	ret void
}

define void @baz() {
	call void @bar(%a *null)
	ret void
}
+27 −0
Original line number Diff line number Diff line
; Do setup work for all below tests: generate bitcode and combined index
; RUN: opt -module-summary %s -o %t.bc
; RUN: opt -module-summary %p/Inputs/import_opaque_type.ll -o %t2.bc
; RUN: llvm-lto -thinlto-action=thinlink -o %t3.bc %t.bc %t2.bc

; Check that we import correctly the imported type to replace the opaque one here
; RUN: llvm-lto -thinlto-action=import %t.bc -thinlto-index=%t3.bc -o - | llvm-dis -o - | FileCheck %s


target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.11.0"

; CHECK: %0 = type { i8 }
%0 = type opaque

%a = type { %0 * }

declare void @baz()
define void @foo(%a *) {
	call void @baz()
	ret void
}

define i32 @main() {
    call void @foo(%a *null)
	ret i32 0
}