[LTO] Reject modules without datalayout.
authorDavide Italiano <davide@freebsd.org>
Wed, 14 Dec 2016 21:57:04 +0000 (21:57 +0000)
committerDavide Italiano <davide@freebsd.org>
Wed, 14 Dec 2016 21:57:04 +0000 (21:57 +0000)
Also, udpate the ~60 failing tests in the tree which did
not contain a valid datalayout.
This fixes PR31123. lld will be updated in a following patch,
immediately after this is committed.

Differential Revision:  https://reviews.llvm.org/D27082

llvm-svn: 289719

90 files changed:
llvm/lib/LTO/LTO.cpp
llvm/lib/LTO/LTOBackend.cpp
llvm/lib/LTO/LTOModule.cpp
llvm/test/LTO/Resolution/X86/Inputs/common2.ll
llvm/test/LTO/Resolution/X86/Inputs/mixed_lto.ll
llvm/test/LTO/Resolution/X86/common2.ll
llvm/test/LTO/Resolution/X86/mixed_lto.ll
llvm/test/LTO/X86/diagnostic-handler-remarks-with-hotness.ll
llvm/test/LTO/X86/diagnostic-handler-remarks.ll
llvm/test/LTO/X86/no-undefined-puts-when-implemented.ll
llvm/test/LTO/X86/triple-init.ll
llvm/test/ThinLTO/X86/Inputs/distributed_import.ll
llvm/test/ThinLTO/X86/distributed_import.ll
llvm/test/tools/gold/X86/Inputs/alias-1.ll
llvm/test/tools/gold/X86/Inputs/available-externally.ll
llvm/test/tools/gold/X86/Inputs/cache.ll
llvm/test/tools/gold/X86/Inputs/comdat.ll
llvm/test/tools/gold/X86/Inputs/comdat2.ll
llvm/test/tools/gold/X86/Inputs/common.ll
llvm/test/tools/gold/X86/Inputs/common2.ll
llvm/test/tools/gold/X86/Inputs/common3.ll
llvm/test/tools/gold/X86/Inputs/ctors2.ll
llvm/test/tools/gold/X86/Inputs/drop-linkage.ll
llvm/test/tools/gold/X86/Inputs/irmover-error.ll
llvm/test/tools/gold/X86/Inputs/linkonce-weak.ll
llvm/test/tools/gold/X86/Inputs/mixed_lto.ll
llvm/test/tools/gold/X86/Inputs/pr19901-1.ll
llvm/test/tools/gold/X86/Inputs/resolve-to-alias.ll
llvm/test/tools/gold/X86/Inputs/start-lib-common.ll
llvm/test/tools/gold/X86/Inputs/thinlto.ll
llvm/test/tools/gold/X86/Inputs/thinlto_alias.ll
llvm/test/tools/gold/X86/Inputs/thinlto_archive1.ll
llvm/test/tools/gold/X86/Inputs/thinlto_archive2.ll
llvm/test/tools/gold/X86/Inputs/thinlto_empty.ll
llvm/test/tools/gold/X86/Inputs/thinlto_internalize.ll
llvm/test/tools/gold/X86/Inputs/thinlto_linkonceresolution.ll
llvm/test/tools/gold/X86/Inputs/thinlto_weak_resolution.ll
llvm/test/tools/gold/X86/Inputs/type-merge.ll
llvm/test/tools/gold/X86/Inputs/type-merge2.ll
llvm/test/tools/gold/X86/Inputs/visibility.ll
llvm/test/tools/gold/X86/Inputs/weak.ll
llvm/test/tools/gold/X86/alias.ll
llvm/test/tools/gold/X86/alias2.ll
llvm/test/tools/gold/X86/available-externally.ll
llvm/test/tools/gold/X86/bad-alias.ll
llvm/test/tools/gold/X86/bcsection.ll
llvm/test/tools/gold/X86/cache.ll
llvm/test/tools/gold/X86/coff.ll
llvm/test/tools/gold/X86/comdat.ll
llvm/test/tools/gold/X86/comdat2.ll
llvm/test/tools/gold/X86/common.ll
llvm/test/tools/gold/X86/ctors.ll
llvm/test/tools/gold/X86/ctors2.ll
llvm/test/tools/gold/X86/disable-verify.ll
llvm/test/tools/gold/X86/drop-linkage.ll
llvm/test/tools/gold/X86/emit-llvm.ll
llvm/test/tools/gold/X86/irmover-error.ll
llvm/test/tools/gold/X86/linker-script.ll
llvm/test/tools/gold/X86/linkonce-weak.ll
llvm/test/tools/gold/X86/mixed_lto.ll
llvm/test/tools/gold/X86/no-map-whole-file.ll
llvm/test/tools/gold/X86/opt-level.ll
llvm/test/tools/gold/X86/parallel.ll
llvm/test/tools/gold/X86/pr19901.ll
llvm/test/tools/gold/X86/pr19901_thinlto.ll
llvm/test/tools/gold/X86/pr25907.ll
llvm/test/tools/gold/X86/pr25915.ll
llvm/test/tools/gold/X86/relax-relocs.ll
llvm/test/tools/gold/X86/resolve-to-alias.ll
llvm/test/tools/gold/X86/slp-vectorize.ll
llvm/test/tools/gold/X86/start-lib-common.ll
llvm/test/tools/gold/X86/strip_names.ll
llvm/test/tools/gold/X86/thinlto.ll
llvm/test/tools/gold/X86/thinlto_alias.ll
llvm/test/tools/gold/X86/thinlto_archive.ll
llvm/test/tools/gold/X86/thinlto_emit_imports.ll
llvm/test/tools/gold/X86/thinlto_internalize.ll
llvm/test/tools/gold/X86/thinlto_linkonceresolution.ll
llvm/test/tools/gold/X86/thinlto_prefix_replace.ll
llvm/test/tools/gold/X86/thinlto_weak_resolution.ll
llvm/test/tools/gold/X86/type-merge.ll
llvm/test/tools/gold/X86/type-merge2.ll
llvm/test/tools/gold/X86/unnamed-addr.ll
llvm/test/tools/gold/X86/visibility.ll
llvm/test/tools/gold/X86/weak.ll
llvm/test/tools/llvm-lto/Inputs/thinlto.ll
llvm/test/tools/llvm-lto/thinlto.ll
llvm/test/tools/llvm-lto2/X86/nodatalayout.ll [new file with mode: 0644]
llvm/test/tools/llvm-lto2/X86/pipeline.ll
llvm/test/tools/llvm-lto2/errors.ll

index 718cbf1..74de6c1 100644 (file)
@@ -380,6 +380,11 @@ Error LTO::addModule(InputFile &Input, InputFile::InputModule &IM,
                      const SymbolResolution *ResE) {
   // FIXME: move to backend
   Module &M = *IM.Mod;
+
+  if (M.getDataLayoutStr().empty())
+    return make_error<StringError>("input module has no datalayout",
+                                    inconvertibleErrorCode());
+
   if (!Conf.OverrideTriple.empty())
     M.setTargetTriple(Conf.OverrideTriple);
   else if (M.getTargetTriple().empty())
index 9d4cbdd..8733826 100644 (file)
@@ -191,7 +191,6 @@ static void runOldPMPasses(Config &Conf, Module &Mod, TargetMachine *TM,
 
 bool opt(Config &Conf, TargetMachine *TM, unsigned Task, Module &Mod,
          bool IsThinLTO) {
-  Mod.setDataLayout(TM->createDataLayout());
   if (Conf.OptPipeline.empty())
     runOldPMPasses(Conf, Mod, TM, IsThinLTO);
   else
index e61a10e..89aeb80 100644 (file)
@@ -233,7 +233,6 @@ LTOModule::makeLTOModule(MemoryBufferRef Buffer, const TargetOptions &options,
 
   TargetMachine *target =
       march->createTargetMachine(TripleStr, CPU, FeatureStr, options, None);
-  M->setDataLayout(target->createDataLayout());
 
   std::unique_ptr<LTOModule> Ret(new LTOModule(std::move(M), Buffer, target));
   Ret->parseSymbols();
index 577e997..c3a7f75 100644 (file)
@@ -1,7 +1,8 @@
-target triple = "x86_64-apple-macosx10.11.0"
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
 
 @v = common global i16 0, align 4
 
 define i16 *@bar() {
  ret i16 *@v
-}
\ No newline at end of file
+}
index 44e82c9..2393deb 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 declare i32 @g()
 define i32 @main() {
index 4a6c95b..3328d7c 100644 (file)
@@ -70,9 +70,8 @@
 ; RUN:  -r %t2.bc,bar,px
 ; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=BOTH-PREVAILED2
 
-
-
-target triple = "x86_64-apple-macosx10.11.0"
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
 
 @v = common global i8 0, align 8
 
index 0302ed9..02b15c6 100644 (file)
@@ -19,6 +19,7 @@
 ; RUN: llvm-nm %t5.o.0 | FileCheck %s --check-prefix=NM0
 ; RUN: llvm-nm %t5.o.1 | FileCheck %s --check-prefix=NM1
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define i32 @g() {
   ret i32 0
index 8a7f4c8..e5d53c7 100644 (file)
@@ -19,6 +19,7 @@
 ; YAML-NEXT:   - Caller:          main
 ; YAML-NEXT: ...
 
+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-darwin"
 
 declare i32 @bar()
index c9e6beb..456bdb5 100644 (file)
@@ -54,6 +54,7 @@
 ; YAML-NEXT:   - Caller:          main
 ; YAML-NEXT: ...
 
+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-darwin"
 
 declare i32 @bar()
index 132ec67..51e5eab 100644 (file)
@@ -5,6 +5,7 @@
 ; rdar://problem/16165191
 ; runtime library implementations should not be renamed
 
+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-darwin11"
 
 @str = private unnamed_addr constant [13 x i8] c"hello world\0A\00"
index e0ad879..7e45952 100644 (file)
@@ -2,8 +2,7 @@
 ; RUN: llvm-lto -exported-symbol=_main  -o %t2 %t1
 ; RUN: llvm-nm %t2 | FileCheck %s 
 
-target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
-
+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.9"
 
 declare double @pow(double, double)
index 759c337..818c1ff 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @G = internal global i32 7
 define i32 @g() {
 entry:
index b1ffd51..0a3f9c0 100644 (file)
@@ -11,6 +11,8 @@
 ; RUN: llvm-dis -o - %t2.out | FileCheck %s
 ; CHECK: @G.llvm.0
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 declare i32 @g(...)
 
 define void @f() {
index 96183aa..58d220e 100644 (file)
@@ -1 +1,3 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = global i32 42
index cbc5c12..ae2a360 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @zed() {
   ret void
 }
index 39fa05a..4abbb45 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 define i32 @main() {
index 7341151..e70b718 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 $c2 = comdat any
 $c1 = comdat any
 
index 5b7f74c..20bc4bf 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 $foo = comdat any
 @foo = global i8 1, comdat
 define void @zed() {
index 48e0356..8743e41 100644 (file)
@@ -1 +1,3 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = common global i32 0, align 4
index 0f309d8..a378063 100644 (file)
@@ -1 +1,3 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = common global i8 0, align 16
index 21d7973..aba9dc8 100644 (file)
@@ -1 +1,3 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = common global i8 0, align 1
index af1590e..c83ce43 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @bar, i8* null }]
 
 define void @bar() {
index 0753061..0799e11 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 $foo = comdat any
 define linkonce void @foo() comdat {
   ret void
index 1ed82c2..a509a95 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 !0 = !{ i32 1, !"foo", i32 2 }
 
 !llvm.module.flags = !{ !0 }
index db5185d..1f48052 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define weak_odr void @f() !dbg !4 {
   ret void, !dbg !10
 }
index 44e82c9..2393deb 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 declare i32 @g()
 define i32 @main() {
index 2f71532..45fa738 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define linkonce_odr hidden void @f() {
   ret void
index eff02a6..3097ef9 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @bar = alias void (), void ()* @zed
 define void @zed() {
   ret void
index e8e53b8..9ba9e8e 100644 (file)
@@ -1 +1,3 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @x = common global i32 0, align 8
index 4e0840f..b81de92 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @g() {
 entry:
   ret void
index 4cee11d..c9ef035 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define weak void @weakfunc() {
 entry:
index 4e0840f..b81de92 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @g() {
 entry:
   ret void
index a95d912..c2bda17 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @h() {
 entry:
   ret void
index 44e82c9..2393deb 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 declare i32 @g()
 define i32 @main() {
index 2f71532..45fa738 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define linkonce_odr hidden void @f() {
   ret void
index 86e2ce3..0f817d7 100644 (file)
@@ -1,3 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; Alias are not optimized
index 4dc2149..6e94bc0 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @zed() {
   call void @bar()
   ret void
index a354757..7cdea6e 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 %zed = type { i16 }
 define void @bar(%zed* %this)  {
   store %zed* %this, %zed** null
index b758d4a..42796a9 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @foo() {
   ret void
 }
index 53b1d16..5209d34 100644 (file)
@@ -1,2 +1,4 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = weak global i32 41
 @c = global i32* @a
index c659f73..9833342 100644 (file)
@@ -9,5 +9,7 @@
 ; CHECK-NEXT: @b = global i32 1
 ; CHECK-NOT: alias
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = weak alias i32, i32* @b
 @b = global i32 1
index 4727e05..3beecd4 100644 (file)
@@ -2,6 +2,8 @@
 ; RUN: %gold -shared -o %t2.bc -plugin %llvmshlibdir/LLVMgold.so %t.o -plugin-opt=emit-llvm
 ; RUN: llvm-dis %t2.bc -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @bar = alias void (), void ()* @zed
 define void @foo() {
   call void @bar()
index d47a536..f01f45d 100644 (file)
@@ -11,6 +11,8 @@
 ; RUN:    -shared %t2.o %t.o -o %t3.o
 ; RUN: llvm-dis %t3.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @foo() {
   call void @bar()
   call void @zed()
index c4e3c3f..2a09f69 100644 (file)
@@ -6,6 +6,8 @@
 
 ; CHECK: Unable to determine comdat of alias!
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @g1 = global i32 1
 @g2 = global i32 2
 
index f7ebe37..8d15987 100644 (file)
@@ -5,6 +5,7 @@
 ; RUN: %gold -r -o %T/bcsection.o -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold.so %T/bcsection.bco
 ; RUN: llvm-nm -no-llvm-bc %T/bcsection.o | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-unknown"
 
 ; CHECK: main
index 756710e..cef983c 100644 (file)
@@ -24,6 +24,7 @@
 
 ; RUN: ls %t.cache | count 2
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 define void @globalfunc() #0 {
index 70d4f91..541383d 100644 (file)
@@ -3,7 +3,7 @@
 ; RUN:    -shared %t.o -o %t2.o
 ; RUN: llvm-dis %t2.o -o - | FileCheck %s
 
-
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target datalayout = "m:w"
 
 ; CHECK: define void @f() {
index 2170bf8..8ed520c 100644 (file)
@@ -5,6 +5,8 @@
 ; RUN: FileCheck --check-prefix=RES %s < %t3.o.resolution.txt
 ; RUN: llvm-readobj -t %t3.o | FileCheck --check-prefix=OBJ %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 $c1 = comdat any
 
 @v1 = weak_odr global i32 42, comdat($c1)
index 2156efd..a15ae1d 100644 (file)
@@ -5,6 +5,7 @@
 ; RUN:    -shared %t.bc %t2.bc -o %t3.bc
 ; RUN: llvm-dis %t3.bc -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 
 $foo = comdat any
 @foo = global i8 0, comdat
index 25a889f..ca506f6 100644 (file)
@@ -3,6 +3,8 @@
 ; RUN: llvm-as %p/Inputs/common2.ll -o %t2b.o
 ; RUN: llvm-as %p/Inputs/common3.ll -o %t2c.o
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = common global i16 0, align 8
 
 ; RUN: %gold -plugin %llvmshlibdir/LLVMgold.so \
index 24c8e34..068a503 100644 (file)
@@ -4,6 +4,8 @@
 ; RUN:    -shared %t.o -o %t2.o
 ; RUN: llvm-dis %t2.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @foo, i8* null }]
 
 define internal void @foo() {
index c39cb71..07802c0 100644 (file)
@@ -5,6 +5,8 @@
 ; RUN:    -shared %t.o %t2.o -o %t3.o
 ; RUN: llvm-dis %t3.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @foo, i8* null }]
 
 define void @foo() {
index af64061..6463504 100644 (file)
@@ -10,6 +10,7 @@
 ; RUN:    --plugin-opt=-debug-pass=Arguments \
 ; RUN:    -shared %t.o -o %t2.o 2>&1 | FileCheck %s -check-prefix=VERIFY
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; -disable-verify should disable output verification from the optimization
index 3013c24..c85d28e 100644 (file)
@@ -7,6 +7,8 @@
 ; RUN:    -shared %t.o %t2.o -o %t3.o
 ; RUN: llvm-dis %t3.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @foo() {
   ret void
 }
index ec1ea8f..70d244c 100644 (file)
@@ -22,6 +22,7 @@
 
 ; NM: T f3
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; CHECK-DAG: @g1 = weak_odr constant i32 32
index 2bfbaf4..32f4b01 100644 (file)
@@ -4,6 +4,8 @@
 
 ; CHECK: fatal error: Failed to link module {{.*}}2.bc: linking module flags 'foo': IDs have conflicting values
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 !0 = !{ i32 1, !"foo", i32 1 }
 
 !llvm.module.flags = !{ !0 }
index 7c88b0f..3cc0675 100644 (file)
@@ -6,6 +6,8 @@
 ; RUN:    -version-script=%p/Inputs/linker-script.export
 ; RUN: llvm-dis %t2.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 ; CHECK: define void @f()
 define void @f() {
   ret void
index fa6372c..258c8dc 100644 (file)
@@ -11,6 +11,8 @@
 ; RUN:    -shared %t2.o %t.o -o %t3.o
 ; RUN: llvm-dis %t3.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define linkonce_odr void @f() !dbg !4 {
   ret void, !dbg !10
 }
index c708594..4b53ff9 100644 (file)
@@ -12,6 +12,7 @@
 ; CHECK-DAG: T main
 ; CHECK-DAG: T g
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define i32 @g() {
   ret i32 0
index 4c261d7..eb74bd7 100644 (file)
@@ -4,6 +4,9 @@
 ; RUN: llvm-dis < %t2.bc -o - | FileCheck %s
 
 ; CHECK: main
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define i32 @main() {
   ret i32 0
 }
index 66935b4..d072866 100644 (file)
@@ -12,6 +12,9 @@
 ; CHECK-O0: define internal void @foo(
 ; CHECK-O1: define internal void @foo(
 ; CHECK-O2-NOT: define internal void @foo(
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define internal void @foo() {
   ret void
 }
index e1923ae..5223291 100644 (file)
@@ -6,6 +6,7 @@
 ; RUN: llvm-nm %t.o0 | FileCheck --check-prefix=CHECK0 %s
 ; RUN: llvm-nm %t.o1 | FileCheck --check-prefix=CHECK1 %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 ; CHECK-BC0: define void @foo
index d1b1076..7967f6c 100644 (file)
@@ -15,6 +15,7 @@
 ; CHECK:         Section: .text
 ; CHECK-NEXT:  }
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define i32 @g() {
   call void @f()
index f253290..6a9dd24 100644 (file)
@@ -16,6 +16,7 @@
 ; CHECK:         Section: .text
 ; CHECK-NEXT:  }
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define i32 @g() {
   call void @f()
index 502938c..f33f2f2 100644 (file)
@@ -4,6 +4,8 @@
 ; RUN: llvm-nm %t2 | FileCheck %s
 ; CHECK: T main
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @main.L = internal unnamed_addr constant [3 x i8*] [i8* blockaddress(@main, %L1), i8* blockaddress(@main, %L2), i8* null], align 16
 
 define i32 @main() #0 {
index e942830..20e4b8b 100644 (file)
@@ -5,6 +5,8 @@
 ; RUN: llvm-dis %t2 -o - | FileCheck %s
 ; CHECK-NOT: subprograms
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 !llvm.dbg.cu = !{!0}
 !llvm.module.flags = !{!3, !4}
 !llvm.ident = !{!5}
index 13a813f..72f081e 100644 (file)
@@ -7,6 +7,7 @@
 ; Test that we produce R_X86_64_GOTPCREL instead of R_X86_64_GOTPCRELX
 ; CHECK: R_X86_64_GOTPCREL foo
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 @foo = external global i32
index 102da6f..bf4a33f 100644 (file)
@@ -15,6 +15,8 @@
 ; RUN: FileCheck --check-prefix=PASS1 %s < %t.ll
 ; RUN: FileCheck --check-prefix=PASS2 %s < %t.ll
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @foo() {
   call void @bar()
   ret void
index e63a21c..7ce4b8e 100644 (file)
@@ -8,6 +8,7 @@
 ; test that the vectorizer is run.
 ; CHECK: fadd <4 x float>
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 define void @f(float* nocapture %x) {
index f4de62e..085cfbd 100644 (file)
@@ -9,6 +9,7 @@
 ; RUN:    -shared %t1.o --start-lib %t2.o --end-lib -o %t3.o
 ; RUN: llvm-dis %t3.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 @x = common global i32 0, align 4
 
 ; ToT gold (as of 03/2016) honors --start-lib/--end-lib, drops %t2.o and ends up
index 2664a82..bb974c8 100644 (file)
@@ -24,6 +24,8 @@
 ; NONAME:  %3 = add i32 %0, %2
 ; NONAME:  ret i32 %3
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @GlobalValueName = global i32 0
 
 define i32 @foo(i32 %in) {
index adc52bd..9ce070a 100644 (file)
 ; COMBINED-NEXT: <COMBINED_ENTRY abbrevid={{[0-9]+}} op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
 ; COMBINED-NEXT: </VALUE_SYMTAB
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 declare void @g(...)
 
 define void @f() {
index 33c888d..97d4f7c 100644 (file)
@@ -27,6 +27,7 @@
 ; OPT: define hidden void @weakfunc.llvm.0()
 ; OPT2: define weak void @weakfunc()
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 @weakfuncAlias = alias void (...), bitcast (void ()* @weakfunc to void (...)*)
index d3f0fce..c2ae679 100644 (file)
@@ -15,6 +15,8 @@
 ; RUN:    -shared %t.o %t.a -o %t4 2>&1 | FileCheck %s
 ; RUN: llvm-nm %t4 | FileCheck %s --check-prefix=NM
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 ; CHECK-DAG: Import g
 declare void @g(...)
 ; CHECK-DAG: Import h
index 4346ece..ebe90fe 100644 (file)
@@ -28,6 +28,8 @@
 ; The index file should be created even for the input with an empty summary.
 ; RUN: ls %t3.o.thinlto.bc
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 declare void @g(...)
 
 define void @f() {
index 8d0033c..f8b200e 100644 (file)
@@ -14,6 +14,7 @@
 ; h() should be internalized after promotion, and eliminated after inlining
 ; CHECK-NOT: @h.llvm.
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define i32 @g() {
   call void @f()
index 810b2dd..bf2d22a 100644 (file)
@@ -23,6 +23,7 @@
 ; OPT-NOT: @f()
 ; OPT2: define weak_odr hidden void @f()
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 define i32 @g() {
   call void @f()
index a635088..200f331 100644 (file)
@@ -11,6 +11,8 @@
 ; RUN:    -shared %T/oldpath/thinlto_prefix_replace.o -o %T/thinlto_prefix_replace
 ; RUN: ls %T/newpath/thinlto_prefix_replace.o.thinlto.bc
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @f() {
 entry:
   ret void
index 095f8ad..8215c42 100644 (file)
@@ -26,6 +26,7 @@
 ; RUN: llvm-dis %t.o.3.import.bc -o - | FileCheck --check-prefix=IMPORT %s
 ; RUN llvm-dis %t2.o.3.import.bc -o - | FileCheck --check-prefix=IMPORT2 %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 
index d903894..b79e977 100644 (file)
@@ -5,6 +5,8 @@
 ; RUN:    -shared %t.o %t2.o -o %t3.o
 ; RUN: llvm-dis %t3.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @foo()  {
   call void @bar(i8* null)
   ret void
index 6a1002f..d020336 100644 (file)
@@ -5,6 +5,8 @@
 ; RUN:    -shared %t.o %t2.o -o %t3.o
 ; RUN: llvm-dis %t3.o.0.2.internalize.bc -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 %zed = type { i8 }
 define void @foo()  {
   call void @bar(%zed* null)
index 290f73d..92f8e7a 100644 (file)
@@ -5,6 +5,8 @@
 ; RUN:    -shared %t.o -o %t2.o
 ; RUN: llvm-dis %t2.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = internal unnamed_addr constant i8 42
 
 define i8* @f() {
index 747a0c3..f63bdbd 100644 (file)
@@ -18,6 +18,8 @@
 
 ; IR: define void @foo
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define weak protected void @foo() {
   ret void
 }
index 6d8d7a8..35cdbbb 100644 (file)
@@ -6,6 +6,8 @@
 ; RUN:    -shared %t.o %t2.o -o %t3.o
 ; RUN: llvm-dis %t3.o -o - | FileCheck %s
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @a = weak global i32 42
 @b = global i32* @a
 
index 4e0840f..b81de92 100644 (file)
@@ -1,3 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @g() {
 entry:
   ret void
index 38c4196..61c52b3 100644 (file)
@@ -21,6 +21,8 @@
 ; COMBINED-NEXT: <COMBINED_ENTRY abbrevid={{[0-9]+}} op0={{1|2}} op1={{-3706093650706652785|-5300342847281564238}}
 ; COMBINED-NEXT: </VALUE_SYMTAB
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 define void @f() {
 entry:
   ret void
diff --git a/llvm/test/tools/llvm-lto2/X86/nodatalayout.ll b/llvm/test/tools/llvm-lto2/X86/nodatalayout.ll
new file mode 100644 (file)
index 0000000..ee5cfb0
--- /dev/null
@@ -0,0 +1,13 @@
+; RUN: llvm-as < %s > %t1.bc
+
+; Reject input modules without a datalayout.
+; RUN: not llvm-lto2 %t1.bc -o %t.o \
+; RUN:  -r %t1.bc,patatino,px 2>&1 | FileCheck %s
+
+; CHECK: input module has no datalayout
+
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @patatino() {
+  ret void
+}
index 69c1b8b..d08659d 100644 (file)
@@ -6,6 +6,7 @@
 ; RUN:  -aa-pipeline basic-aa
 ; RUN: llvm-dis < %t.o.0.4.opt.bc | FileCheck %s --check-prefix=CUSTOM
 
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 define void @patatino() {
index cd2394d..25c0543 100644 (file)
@@ -8,4 +8,7 @@
 ; ERR2: unused symbol resolution for {{.*}}.bc,bar
 ; ERR3: invalid character q in resolution: {{.*}}.bc,foo
 ; ERR4: invalid resolution: foo
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
 @foo = global i32 0