# REQUIRES: x86

## Test that DTLTO options are passed correctly to the distributor and
## remote compiler.

RUN: rm -rf %t && split-file %s %t && cd %t

RUN: opt -thinlto-bc foo.ll -o foo.o

## Note: validate.py does not perform any compilation. Instead, it validates the
## received JSON, pretty-prints the JSON and the supplied arguments, and then
## exits with an error. This allows FileCheck directives to verify the
## distributor inputs.
RUN: not ld.lld foo.o \
RUN:   -o my.elf \
RUN:   --thinlto-distributor=%python \
RUN:   --thinlto-distributor-arg=%llvm_src_root/utils/dtlto/validate.py \
RUN:   --thinlto-distributor-arg=darg1=10 \
RUN:   --thinlto-distributor-arg=darg2=20 \
RUN:   --thinlto-remote-compiler=my_clang.exe \
RUN:   --thinlto-remote-compiler-arg=carg1=20 \
RUN:   --thinlto-remote-compiler-arg=carg2=30 2>&1 | FileCheck %s

CHECK: distributor_args=['darg1=10', 'darg2=20']

CHECK: "linker_output": "my.elf"

CHECK: "my_clang.exe"
CHECK: "carg1=20"
CHECK: "carg2=30"

CHECK: error: DTLTO backend compilation: cannot open native object file:

#--- foo.ll
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @foo() {
  ret void
}
