diff options
author | Reid Kleckner <reid@kleckner.net> | 2015-06-11 01:31:48 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2015-06-11 01:31:48 +0000 |
commit | c35e7f52ba75fc1456c1e92bc3b17387c6a37a30 (patch) | |
tree | 390435013460a5abc040f3b708e9b749418a5aa2 /llvm/lib/Target/ARM/ARMAsmPrinter.cpp | |
parent | 7cbe58d3c59010af02a13448b10abfbe2cc0fc39 (diff) | |
download | bcm5719-llvm-c35e7f52ba75fc1456c1e92bc3b17387c6a37a30.tar.gz bcm5719-llvm-c35e7f52ba75fc1456c1e92bc3b17387c6a37a30.zip |
Revert "Move dllimport name mangling to IR mangler."
This reverts commit r239437.
This broke clang-cl self-hosts. We'd end up calling the __imp_ symbol
directly instead of using it to do an indirect function call.
llvm-svn: 239502
Diffstat (limited to 'llvm/lib/Target/ARM/ARMAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 353c20bcf76..37b74d4677e 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -851,7 +851,16 @@ MCSymbol *ARMAsmPrinter::GetARMGVSymbol(const GlobalValue *GV, } else if (Subtarget->isTargetCOFF()) { assert(Subtarget->isTargetWindows() && "Windows is the only supported COFF target"); - return getSymbol(GV); + + bool IsIndirect = (TargetFlags & ARMII::MO_DLLIMPORT); + if (!IsIndirect) + return getSymbol(GV); + + SmallString<128> Name; + Name = "__imp_"; + getNameWithPrefix(Name, GV); + + return OutContext.getOrCreateSymbol(Name); } else if (Subtarget->isTargetELF()) { return getSymbol(GV); } |