| # REQUIRES: x86 |
| |
| ## Test that DTLTO works with more than one LTO partition. |
| |
| RUN: rm -rf %t && split-file %s %t && cd %t |
| |
| RUN: sed 's/@f/@t1/g' f.ll > t1.ll |
| RUN: sed 's/@f/@t2/g' f.ll > t2.ll |
| |
| ## Generate bitcode. |
| RUN: opt f.ll -o full.bc |
| RUN: opt -thinlto-bc t1.ll -o thin1.bc |
| RUN: opt -thinlto-bc t2.ll -o thin2.bc |
| |
| ## Generate object files for mock.py to return. |
| RUN: llc t1.ll --filetype=obj -o thin1.o |
| RUN: llc t2.ll --filetype=obj -o thin2.o |
| |
| ## Link with 3 LTO partitions. |
| RUN: ld.lld full.bc thin1.bc thin2.bc \ |
| RUN: --thinlto-distributor=%python \ |
| RUN: --thinlto-distributor-arg=%llvm_src_root/utils/dtlto/mock.py \ |
| RUN: --thinlto-distributor-arg=thin1.o \ |
| RUN: --thinlto-distributor-arg=thin2.o \ |
| RUN: --save-temps \ |
| RUN: --lto-partitions=3 |
| |
| ## DTLTO temporary object files include the task number and a PID component. The |
| ## task number should incorporate the LTO partition number. |
| RUN: ls | sort | FileCheck %s |
| CHECK: {{^}}thin1.3.[[PID:[a-zA-Z0-9_]+]].native.o{{$}} |
| CHECK: {{^}}thin2.4.[[PID]].native.o{{$}} |
| |
| #--- f.ll |
| target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |
| target triple = "x86_64-unknown-linux-gnu" |
| |
| define void @f() { |
| ret void |
| } |