diff options
| author | Davide Italiano <davide@freebsd.org> | 2016-04-03 02:41:15 +0000 |
|---|---|---|
| committer | Davide Italiano <davide@freebsd.org> | 2016-04-03 02:41:15 +0000 |
| commit | 8848d44e466681d81a5868d240cbb001b59a26e6 (patch) | |
| tree | b68685692721b344c5a24bb137cbd985c6cf2156 | |
| parent | 887d76c392998d3948d3157aa902c565b0e389f8 (diff) | |
| download | bcm5719-llvm-8848d44e466681d81a5868d240cbb001b59a26e6.tar.gz bcm5719-llvm-8848d44e466681d81a5868d240cbb001b59a26e6.zip | |
[LTO] Reject invalid optimization levels.
llvm-svn: 265255
| -rw-r--r-- | lld/ELF/Driver.cpp | 2 | ||||
| -rw-r--r-- | lld/test/ELF/lto/opt-level.ll | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index e828700a97e..de3f12cc51a 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -301,6 +301,8 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) { Config->Optimize = getInteger(Args, OPT_O, 0); Config->LtoO = getInteger(Args, OPT_lto_O, 2); + if (Config->LtoO > 3) + error("invalid optimization level for LTO: " + getString(Args, OPT_lto_O)); Config->ZExecStack = hasZOption(Args, "execstack"); Config->ZNodelete = hasZOption(Args, "nodelete"); diff --git a/lld/test/ELF/lto/opt-level.ll b/lld/test/ELF/lto/opt-level.ll index c52588edf5d..e810fc93f9d 100644 --- a/lld/test/ELF/lto/opt-level.ll +++ b/lld/test/ELF/lto/opt-level.ll @@ -6,6 +6,11 @@ ; RUN: ld.lld -o %t2a -m elf_x86_64 -e main %t.o ; RUN: llvm-nm %t2a | FileCheck --check-prefix=CHECK-O2 %s +; Reject invalid optimization levels. +; RUN: not ld.lld -o %t3 -m elf_x86_64 -e main --lto-O6 %t.o 2>&1 | \ +; RUN: FileCheck --check-prefix=INVALID %s +; INVALID: invalid optimization level for LTO: 6 + target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" |

