[llvm] [win][x64] Fix import call optimization for calls to dllimports and global function pointers (PR #160604)

Daniel Paoliello via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 25 11:46:48 PDT 2025


================
@@ -2586,9 +2593,25 @@ void X86AsmPrinter::emitInstruction(const MachineInstr *MI) {
     break;
 
   case X86::CALL64m:
-    if (EnableImportCallOptimization && isCallToCFGuardFunction(MI)) {
-      emitLabelAndRecordForImportCallOptimization(
-          IMAGE_RETPOLINE_AMD64_CFG_CALL);
+    if (EnableImportCallOptimization) {
+      if (isCallToCFGuardFunction(MI)) {
+        emitLabelAndRecordForImportCallOptimization(
+            IMAGE_RETPOLINE_AMD64_CFG_CALL);
+      } else if (isImportedFunction(MI->getOperand(3))) {
----------------
dpaoliello wrote:

Despite the name, Import Call Optimization also wants to know all the places where there are CF Guard calls whether they are for imported functions or not.

https://github.com/llvm/llvm-project/pull/160604


More information about the llvm-commits mailing list