blob: fbcbc0713ce23ab7a3dd1adecbfe7d6ccfd4b02b [file] [edit]
# 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
}