Announced on https://lists.llvm.org/pipermail/llvm-dev/2020-May/141416.html For many options, we have to support either one or two dash to be compatible with GNU ld. For newer and lld specific options, we can enforce strict double dashes. Affected options: * --thinlto-* * --lto-* * --shuffle-sections= This patch does not change `-plugin-opt=*` because clang driver passes `-plugin-opt=*` and I don't intend to cause churn. In 2000, GNU ld tried something similar with --omagic https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=e4897a3288f37d5f69e8acd256a6e83e607fe8d8 Reviewed By: tejohnson, psmith Differential Revision: https://reviews.llvm.org/D79371
29 lines
1.5 KiB
LLVM
29 lines
1.5 KiB
LLVM
; REQUIRES: x86
|
|
; Check that changing the output path via thinlto-prefix-replace works
|
|
; RUN: mkdir -p %t/oldpath
|
|
; RUN: opt -module-summary %s -o %t/oldpath/thinlto_prefix_replace.o
|
|
|
|
; Ensure that there is no existing file at the new path, so we properly
|
|
; test the creation of the new file there.
|
|
; RUN: rm -f %t/newpath/thinlto_prefix_replace.o.thinlto.bc
|
|
; RUN: ld.lld --plugin-opt=thinlto-index-only --plugin-opt=thinlto-prefix-replace="%t/oldpath/;%t/newpath/" -shared %t/oldpath/thinlto_prefix_replace.o -o %t/thinlto_prefix_replace
|
|
; RUN: ls %t/newpath/thinlto_prefix_replace.o.thinlto.bc
|
|
|
|
; Check that this also works without the --plugin-opt= prefix.
|
|
; RUN: rm -f %t/newpath/thinlto_prefix_replace.o.thinlto.bc
|
|
; RUN: ld.lld --thinlto-index-only --thinlto-prefix-replace="%t/oldpath/;%t/newpath/" -shared %t/oldpath/thinlto_prefix_replace.o -o %t/thinlto_prefix_replace
|
|
; RUN: ls %t/newpath/thinlto_prefix_replace.o.thinlto.bc
|
|
|
|
; Ensure that lld generates error if prefix replace option does not have 'old;new' format
|
|
; RUN: rm -f %t/newpath/thinlto_prefix_replace.o.thinlto.bc
|
|
; RUN: not ld.lld --plugin-opt=thinlto-index-only --plugin-opt=thinlto-prefix-replace=abc:def -shared %t/oldpath/thinlto_prefix_replace.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR
|
|
; ERR: --plugin-opt=thinlto-prefix-replace= expects 'old;new' format, but got abc:def
|
|
|
|
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
define void @f() {
|
|
entry:
|
|
ret void
|
|
}
|