1*9a450a00SSam Clegg;; Copied from testr/ELF/lto/obj-path.ll 2*9a450a00SSam Clegg;; Test --lto-obj-path= for regular LTO. 3*9a450a00SSam Clegg 4*9a450a00SSam Clegg; RUN: rm -rf %t && split-file %s %t && cd %t 5*9a450a00SSam Clegg; RUN: mkdir d 6*9a450a00SSam Clegg; RUN: opt 1.ll -o 1.bc 7*9a450a00SSam Clegg; RUN: opt 2.ll -o d/2.bc 8*9a450a00SSam Clegg 9*9a450a00SSam Clegg; RUN: rm -f objpath.o 10*9a450a00SSam Clegg; RUN: wasm-ld --lto-obj-path=objpath.o -shared 1.bc d/2.bc -o 3 11*9a450a00SSam Clegg; RUN: llvm-nm 3 | FileCheck %s --check-prefix=NM 12*9a450a00SSam Clegg; RUN: llvm-objdump -d objpath.o | FileCheck %s 13*9a450a00SSam Clegg; RUN: ls 3* objpath* | count 2 14*9a450a00SSam Clegg 15*9a450a00SSam Clegg; RUN: rm -f 3 objpath.o 16*9a450a00SSam Clegg; RUN: wasm-ld --thinlto-index-only=3.txt --lto-obj-path=objpath.o -shared 1.bc d/2.bc -o 3 17*9a450a00SSam Clegg; RUN: llvm-objdump -d objpath.o | FileCheck %s 18*9a450a00SSam Clegg; RUN: not ls 3 19*9a450a00SSam Clegg 20*9a450a00SSam Clegg; NM: T f 21*9a450a00SSam Clegg; NM: T g 22*9a450a00SSam Clegg 23*9a450a00SSam Clegg; CHECK: file format wasm 24*9a450a00SSam Clegg; CHECK: <f>: 25*9a450a00SSam Clegg; CHECK: <g>: 26*9a450a00SSam Clegg 27*9a450a00SSam Clegg;; Test --lto-obj-path= for ThinLTO. 28*9a450a00SSam Clegg; RUN: opt -module-summary 1.ll -o 1.bc 29*9a450a00SSam Clegg; RUN: opt -module-summary 2.ll -o d/2.bc 30*9a450a00SSam Clegg 31*9a450a00SSam Clegg; RUN: wasm-ld --lto-obj-path=objpath.o -shared 1.bc d/2.bc -o 3 32*9a450a00SSam Clegg; RUN: llvm-nm 3 | FileCheck %s --check-prefix=NM3 33*9a450a00SSam Clegg; RUN: llvm-objdump -d objpath.o1 | FileCheck %s --check-prefix=CHECK1 34*9a450a00SSam Clegg; RUN: llvm-objdump -d objpath.o2 | FileCheck %s --check-prefix=CHECK2 35*9a450a00SSam Clegg 36*9a450a00SSam Clegg; NM3: T f 37*9a450a00SSam Clegg; NM3-NEXT: T g 38*9a450a00SSam Clegg 39*9a450a00SSam Clegg; CHECK1: file format wasm 40*9a450a00SSam Clegg; CHECK1-EMPTY: 41*9a450a00SSam Clegg; CHECK1-NEXT: Disassembly of section CODE: 42*9a450a00SSam Clegg; CHECK1: <f>: 43*9a450a00SSam Clegg; CHECK1-EMPTY: 44*9a450a00SSam Clegg; CHECK1-NEXT: end 45*9a450a00SSam Clegg; CHECK1-NOT: {{.}} 46*9a450a00SSam Clegg 47*9a450a00SSam Clegg; CHECK2: file format wasm 48*9a450a00SSam Clegg; CHECK2-EMPTY: 49*9a450a00SSam Clegg; CHECK2-NEXT: Disassembly of section CODE: 50*9a450a00SSam Clegg; CHECK2: <g>: 51*9a450a00SSam Clegg; CHECK2-EMPTY: 52*9a450a00SSam Clegg; CHECK2-NEXT: end 53*9a450a00SSam Clegg; CHECK2-NOT: {{.}} 54*9a450a00SSam Clegg 55*9a450a00SSam Clegg;; With --thinlto-index-only, --lto-obj-path= creates just one file. 56*9a450a00SSam Clegg; RUN: rm -f objpath.o objpath.o1 objpath.o2 57*9a450a00SSam Clegg; RUN: wasm-ld --thinlto-index-only --lto-obj-path=objpath.o -shared 1.bc d/2.bc -o /dev/null 58*9a450a00SSam Clegg; RUN: llvm-objdump -d objpath.o | FileCheck %s --check-prefix=EMPTY 59*9a450a00SSam Clegg; RUN: not ls objpath.o1 60*9a450a00SSam Clegg; RUN: not ls objpath.o2 61*9a450a00SSam Clegg 62*9a450a00SSam Clegg;; Ensure lld emits empty combined module if specific obj-path. 63*9a450a00SSam Clegg; RUN: mkdir obj 64*9a450a00SSam Clegg; RUN: wasm-ld --lto-obj-path=objpath.o -shared 1.bc d/2.bc -o obj/out --save-temps 65*9a450a00SSam Clegg; RUN: ls obj/out.lto.o out.lto.1.o d/out.lto.2.o 66*9a450a00SSam Clegg 67*9a450a00SSam Clegg;; Ensure lld does not emit empty combined module by default. 68*9a450a00SSam Clegg; RUN: rm -fr obj && mkdir obj 69*9a450a00SSam Clegg; RUN: wasm-ld -shared 1.bc d/2.bc -o obj/out --save-temps 70*9a450a00SSam Clegg; RUN: not test -e obj/out.lto.o 71*9a450a00SSam Clegg 72*9a450a00SSam Clegg; EMPTY: file format wasm 73*9a450a00SSam Clegg; EMPTY-NOT: {{.}} 74*9a450a00SSam Clegg 75*9a450a00SSam Clegg;--- 1.ll 76*9a450a00SSam Cleggtarget datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20" 77*9a450a00SSam Cleggtarget triple = "wasm32-unknown-unknown" 78*9a450a00SSam Clegg 79*9a450a00SSam Cleggdeclare void @g(...) 80*9a450a00SSam Clegg 81*9a450a00SSam Cleggdefine void @f() { 82*9a450a00SSam Cleggentry: 83*9a450a00SSam Clegg call void (...) @g() 84*9a450a00SSam Clegg ret void 85*9a450a00SSam Clegg} 86*9a450a00SSam Clegg 87*9a450a00SSam Clegg;--- 2.ll 88*9a450a00SSam Cleggtarget datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20" 89*9a450a00SSam Cleggtarget triple = "wasm32-unknown-unknown" 90*9a450a00SSam Clegg 91*9a450a00SSam Cleggdefine void @g() { 92*9a450a00SSam Cleggentry: 93*9a450a00SSam Clegg ret void 94*9a450a00SSam Clegg} 95