summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2018-12-18 01:59:33 +0000
committerReid Kleckner <rnk@google.com>2018-12-18 01:59:33 +0000
commit0aa260d2c914466f262175a017bff66fc49d9561 (patch)
treeb752d690320b4d0c62d93f5468cd83d177ba2196
parent362d022d604c0183e5918c78d673c172925686ad (diff)
downloadbcm5719-llvm-0aa260d2c914466f262175a017bff66fc49d9561.tar.gz
bcm5719-llvm-0aa260d2c914466f262175a017bff66fc49d9561.zip
[COFF] Set the CPU string for LTO like ELF does
Fixes PR40043 llvm-svn: 349436
-rw-r--r--lld/COFF/LTO.cpp1
-rw-r--r--lld/test/COFF/lto-cpu-string.ll21
2 files changed, 22 insertions, 0 deletions
diff --git a/lld/COFF/LTO.cpp b/lld/COFF/LTO.cpp
index 66ae7b1d228..92d9ff0937c 100644
--- a/lld/COFF/LTO.cpp
+++ b/lld/COFF/LTO.cpp
@@ -60,6 +60,7 @@ static std::unique_ptr<lto::LTO> createLTO() {
C.DisableVerify = true;
C.DiagHandler = diagnosticHandler;
C.OptLevel = Config->LTOO;
+ C.CPU = GetCPUStr();
C.MAttrs = GetMAttrs();
if (Config->SaveTemps)
diff --git a/lld/test/COFF/lto-cpu-string.ll b/lld/test/COFF/lto-cpu-string.ll
new file mode 100644
index 00000000000..840adcebf46
--- /dev/null
+++ b/lld/test/COFF/lto-cpu-string.ll
@@ -0,0 +1,21 @@
+; REQUIRES: x86
+; RUN: llvm-as %s -o %t.obj
+
+; RUN: lld-link %t.obj -noentry -nodefaultlib -out:%t.dll -dll
+; RUN: llvm-objdump -d -section=".text" -no-leading-addr -no-show-raw-insn %t.dll | FileCheck %s
+; CHECK: nop{{$}}
+
+; RUN: lld-link -mllvm:-mcpu=znver1 -noentry -nodefaultlib %t.obj -out:%t.znver1.dll -dll
+; RUN: llvm-objdump -d -section=".text" -no-leading-addr -no-show-raw-insn %t.znver1.dll | FileCheck -check-prefix=ZNVER1 %s
+; ZNVER1: nopw
+
+target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc19.14.26433"
+
+define dllexport void @foo() #0 {
+entry:
+ call void asm sideeffect ".p2align 4, 0x90", "~{dirflag},~{fpsr},~{flags}"()
+ ret void
+}
+
+attributes #0 = { "no-frame-pointer-elim"="true" }
OpenPOWER on IntegriCloud