Author: mehdi_amini Date: Wed Nov 23 14:52:51 2016 New Revision: 287805 URL: http://llvm.org/viewvc/llvm-project?rev=287805&view=rev Log: Merge r287453 in 3.9.1 : [ThinLTO] Fix crash when importing an opaque type
See: http://llvm.org/PR31072 Added: llvm/branches/release_39/test/ThinLTO/X86/Inputs/import_opaque_type.ll llvm/branches/release_39/test/ThinLTO/X86/import_opaque_type.ll Modified: llvm/branches/release_39/lib/Linker/IRMover.cpp Modified: llvm/branches/release_39/lib/Linker/IRMover.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_39/lib/Linker/IRMover.cpp?rev=287805&r1=287804&r2=287805&view=diff ============================================================================== --- llvm/branches/release_39/lib/Linker/IRMover.cpp (original) +++ llvm/branches/release_39/lib/Linker/IRMover.cpp Wed Nov 23 14:52:51 2016 @@ -1336,7 +1336,7 @@ bool IRMover::IdentifiedStructTypeSet::h 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); Added: llvm/branches/release_39/test/ThinLTO/X86/Inputs/import_opaque_type.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_39/test/ThinLTO/X86/Inputs/import_opaque_type.ll?rev=287805&view=auto ============================================================================== --- llvm/branches/release_39/test/ThinLTO/X86/Inputs/import_opaque_type.ll (added) +++ llvm/branches/release_39/test/ThinLTO/X86/Inputs/import_opaque_type.ll Wed Nov 23 14:52:51 2016 @@ -0,0 +1,15 @@ +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 +} Added: llvm/branches/release_39/test/ThinLTO/X86/import_opaque_type.ll URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_39/test/ThinLTO/X86/import_opaque_type.ll?rev=287805&view=auto ============================================================================== --- llvm/branches/release_39/test/ThinLTO/X86/import_opaque_type.ll (added) +++ llvm/branches/release_39/test/ThinLTO/X86/import_opaque_type.ll Wed Nov 23 14:52:51 2016 @@ -0,0 +1,27 @@ +; 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 +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits