Index: llvm/test/Instrumentation/AddressSanitizer/freebsd.ll =================================================================== --- llvm/test/Instrumentation/AddressSanitizer/freebsd.ll +++ llvm/test/Instrumentation/AddressSanitizer/freebsd.ll @@ -1,11 +1,11 @@ ; RUN: opt < %s -asan -asan-module -S \ ; RUN: -mtriple=i386-unknown-freebsd \ -; RUN: -default-data-layout="e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128" | \ +; RUN: -data-layout="e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128" | \ ; RUN: FileCheck --check-prefix=CHECK-32 %s ; RUN: opt < %s -asan -asan-module -S \ ; RUN: -mtriple=x86_64-unknown-freebsd \ -; RUN: -default-data-layout="e-m:e-i64:64-f80:128-n8:16:32:64-S128" | \ +; RUN: -data-layout="e-m:e-i64:64-f80:128-n8:16:32:64-S128" | \ ; RUN: FileCheck --check-prefix=CHECK-64 %s define i32 @read_4_bytes(i32* %a) sanitize_address { Index: llvm/test/Other/constant-fold-gep.ll =================================================================== --- llvm/test/Other/constant-fold-gep.ll +++ llvm/test/Other/constant-fold-gep.ll @@ -8,7 +8,7 @@ ; "TO" - Optimizations and targetdata. This tests target-dependent ; folding in the optimizers. -; RUN: opt -S -o - -instcombine -globalopt -default-data-layout="e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" < %s | FileCheck --check-prefix=TO %s +; RUN: opt -S -o - -instcombine -globalopt -data-layout="e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64" < %s | FileCheck --check-prefix=TO %s ; "SCEV" - ScalarEvolution with default target layout ; RUN: opt -analyze -scalar-evolution < %s | FileCheck --check-prefix=SCEV %s Index: llvm/test/Transforms/ConstProp/loads.ll =================================================================== --- llvm/test/Transforms/ConstProp/loads.ll +++ llvm/test/Transforms/ConstProp/loads.ll @@ -1,5 +1,5 @@ -; RUN: opt < %s -default-data-layout="e-p:64:64:64-p1:16:16:16-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" -instcombine -S | FileCheck %s --check-prefix=LE -; RUN: opt < %s -default-data-layout="E-p:64:64:64-p1:16:16:16-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" -instcombine -S | FileCheck %s --check-prefix=BE +; RUN: opt < %s -data-layout="e-p:64:64:64-p1:16:16:16-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" -instcombine -S | FileCheck %s --check-prefix=LE +; RUN: opt < %s -data-layout="E-p:64:64:64-p1:16:16:16-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" -instcombine -S | FileCheck %s --check-prefix=BE ; {{ 0xDEADBEEF, 0xBA }, 0xCAFEBABE} @g1 = constant {{i32,i8},i32} {{i32,i8} { i32 -559038737, i8 186 }, i32 -889275714 } Index: llvm/test/Transforms/GVN/PRE/rle-addrspace-cast.ll =================================================================== --- llvm/test/Transforms/GVN/PRE/rle-addrspace-cast.ll +++ llvm/test/Transforms/GVN/PRE/rle-addrspace-cast.ll @@ -1,4 +1,4 @@ -; RUN: opt < %s -default-data-layout="e-p:32:32:32-p1:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-n8:16:32" -basicaa -gvn -S -die | FileCheck %s +; RUN: opt < %s -data-layout="e-p:32:32:32-p1:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-n8:16:32" -basicaa -gvn -S -die | FileCheck %s define i8 @coerce_offset0_addrspacecast(i32 %V, i32* %P) { store i32 %V, i32* %P Index: llvm/test/Transforms/GVN/PRE/rle.ll =================================================================== --- llvm/test/Transforms/GVN/PRE/rle.ll +++ llvm/test/Transforms/GVN/PRE/rle.ll @@ -1,5 +1,5 @@ -; RUN: opt < %s -default-data-layout="e-p:32:32:32-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-n8:16:32" -basicaa -gvn -S -die | FileCheck %s -; RUN: opt < %s -default-data-layout="E-p:32:32:32-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-n32" -basicaa -gvn -S -die | FileCheck %s +; RUN: opt < %s -data-layout="e-p:32:32:32-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-n8:16:32" -basicaa -gvn -S -die | FileCheck %s +; RUN: opt < %s -data-layout="E-p:32:32:32-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-n32" -basicaa -gvn -S -die | FileCheck %s ;; Trivial RLE test. define i32 @test0(i32 %V, i32* %P) { Index: llvm/test/Transforms/IndVarSimplify/2011-11-01-lftrptr.ll =================================================================== --- llvm/test/Transforms/IndVarSimplify/2011-11-01-lftrptr.ll +++ llvm/test/Transforms/IndVarSimplify/2011-11-01-lftrptr.ll @@ -1,5 +1,5 @@ -; RUN: opt < %s -indvars -S "-default-data-layout=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" | FileCheck %s -; RUN: opt < %s -indvars -S "-default-data-layout=e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32" | FileCheck %s +; RUN: opt < %s -indvars -S "-data-layout=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" | FileCheck %s +; RUN: opt < %s -indvars -S "-data-layout=e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32" | FileCheck %s ; ; PR11279: Assertion !IVLimit->getType()->isPointerTy() ; Index: llvm/test/Transforms/InstCombine/2012-07-25-LoadPart.ll =================================================================== --- llvm/test/Transforms/InstCombine/2012-07-25-LoadPart.ll +++ llvm/test/Transforms/InstCombine/2012-07-25-LoadPart.ll @@ -1,5 +1,5 @@ -; RUN: opt < %s -default-data-layout="e-p:32:32:32" -instcombine -S | FileCheck %s --check-prefix=LE -; RUN: opt < %s -default-data-layout="E-p:32:32:32" -instcombine -S | FileCheck %s --check-prefix=BE +; RUN: opt < %s -data-layout="e-p:32:32:32" -instcombine -S | FileCheck %s --check-prefix=LE +; RUN: opt < %s -data-layout="E-p:32:32:32" -instcombine -S | FileCheck %s --check-prefix=BE ; PR13442 @test = constant [4 x i32] [i32 1, i32 2, i32 3, i32 4] Index: llvm/test/Transforms/InstCombine/alloca.ll =================================================================== --- llvm/test/Transforms/InstCombine/alloca.ll +++ llvm/test/Transforms/InstCombine/alloca.ll @@ -1,5 +1,5 @@ -; RUN: opt < %s -instcombine -S -default-data-layout="E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" | FileCheck %s -check-prefix=CHECK -check-prefix=ALL -; RUN: opt < %s -instcombine -S -default-data-layout="E-p:32:32:32-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" | FileCheck %s -check-prefix=P32 -check-prefix=ALL +; RUN: opt < %s -instcombine -S -data-layout="E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" | FileCheck %s -check-prefix=CHECK -check-prefix=ALL +; RUN: opt < %s -instcombine -S -data-layout="E-p:32:32:32-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" | FileCheck %s -check-prefix=P32 -check-prefix=ALL ; RUN: opt < %s -instcombine -S | FileCheck %s -check-prefix=NODL -check-prefix=ALL Index: llvm/test/Transforms/InstCombine/load-cmp.ll =================================================================== --- llvm/test/Transforms/InstCombine/load-cmp.ll +++ llvm/test/Transforms/InstCombine/load-cmp.ll @@ -1,5 +1,5 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py -; RUN: opt -instcombine -S -default-data-layout="p:32:32:32-p1:16:16:16-n8:16:32:64" < %s | FileCheck %s +; RUN: opt -instcombine -S -data-layout="p:32:32:32-p1:16:16:16-n8:16:32:64" < %s | FileCheck %s @G16 = internal constant [10 x i16] [i16 35, i16 82, i16 69, i16 81, i16 85, i16 73, i16 82, i16 69, i16 68, i16 0] Index: llvm/test/Transforms/InstCombine/narrow-switch.ll =================================================================== --- llvm/test/Transforms/InstCombine/narrow-switch.ll +++ llvm/test/Transforms/InstCombine/narrow-switch.ll @@ -1,7 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; Vary legal integer types in data layout. -; RUN: opt < %s -instcombine -S -default-data-layout=n32 | FileCheck %s --check-prefix=ALL --check-prefix=CHECK32 -; RUN: opt < %s -instcombine -S -default-data-layout=n32:64 | FileCheck %s --check-prefix=ALL --check-prefix=CHECK64 +; RUN: opt < %s -instcombine -S -data-layout=n32 | FileCheck %s --check-prefix=ALL --check-prefix=CHECK32 +; RUN: opt < %s -instcombine -S -data-layout=n32:64 | FileCheck %s --check-prefix=ALL --check-prefix=CHECK64 ; In all cases, the data-layout is irrelevant. We should shrink as much as possible in InstCombine ; and allow the backend to expand as much as needed to ensure optimal codegen for any target. Index: llvm/test/Transforms/SCCP/loadtest.ll =================================================================== --- llvm/test/Transforms/SCCP/loadtest.ll +++ llvm/test/Transforms/SCCP/loadtest.ll @@ -1,7 +1,7 @@ ; This test makes sure that these instructions are properly constant propagated. -; RUN: opt < %s -default-data-layout="e-p:32:32" -sccp -S | FileCheck %s -; RUN: opt < %s -default-data-layout="E-p:32:32" -sccp -S | FileCheck %s +; RUN: opt < %s -data-layout="e-p:32:32" -sccp -S | FileCheck %s +; RUN: opt < %s -data-layout="E-p:32:32" -sccp -S | FileCheck %s ; CHECK-NOT: load Index: llvm/test/Transforms/SimplifyCFG/switch_create.ll =================================================================== --- llvm/test/Transforms/SimplifyCFG/switch_create.ll +++ llvm/test/Transforms/SimplifyCFG/switch_create.ll @@ -1,5 +1,5 @@ ; RUN: opt -S -simplifycfg < %s | FileCheck %s -; RUN: opt -S -default-data-layout="p:32:32-p1:16:16" -simplifycfg < %s | FileCheck -check-prefix=CHECK -check-prefix=DL %s +; RUN: opt -S -data-layout="p:32:32-p1:16:16" -simplifycfg < %s | FileCheck -check-prefix=CHECK -check-prefix=DL %s declare void @foo1() Index: llvm/tools/opt/opt.cpp =================================================================== --- llvm/tools/opt/opt.cpp +++ llvm/tools/opt/opt.cpp @@ -201,10 +201,10 @@ PrintBreakpoints("print-breakpoints-for-testing", cl::desc("Print select breakpoints location for testing")); -static cl::opt -DefaultDataLayout("default-data-layout", - cl::desc("data layout string to use if not specified by module"), - cl::value_desc("layout-string"), cl::init("")); +static cl::opt ClDataLayout("data-layout", + cl::desc("data layout string to use"), + cl::value_desc("layout-string"), + cl::init("")); static cl::opt PreserveBitcodeUseListOrder( "preserve-bc-uselistorder", @@ -448,9 +448,11 @@ return 1; } - // If we are supposed to override the target triple, do so now. + // If we are supposed to override the target triple or data layout, do so now. if (!TargetTriple.empty()) M->setTargetTriple(Triple::normalize(TargetTriple)); + if (!ClDataLayout.empty()) + M->setDataLayout(ClDataLayout); // Figure out what stream we are supposed to write to... std::unique_ptr Out; @@ -530,12 +532,6 @@ TLII.disableAllFunctions(); Passes.add(new TargetLibraryInfoWrapperPass(TLII)); - // Add an appropriate DataLayout instance for this module. - const DataLayout &DL = M->getDataLayout(); - if (DL.isDefault() && !DefaultDataLayout.empty()) { - M->setDataLayout(DefaultDataLayout); - } - // Add internal analysis passes from the target machine. Passes.add(createTargetTransformInfoWrapperPass(TM ? TM->getTargetIRAnalysis() : TargetIRAnalysis()));