================
@@ -4046,6 +4065,12 @@ void CodeGenModule::EmitGlobal(GlobalDecl GD) {
     // The value must be emitted, but cannot be emitted eagerly.
     assert(!MayBeEmittedEagerly(Global));
     addDeferredDeclToEmit(GD);
+  } else if (!getLangOpts().CPlusPlus && ND &&
+             GetGlobalValue(ND->getName()) != nullptr &&
+             MangledName.contains(llvm::FunctionSamples::UniqSuffix)) {
+    // Emit static C function that is mangled with
+    // -funique-internal-linkage-names.
----------------
efriedma-quic wrote:

I'm not really happy with this.  The code for deferred declarations and 
diagnosing name conflicts is complicated enough without adding the possibility 
that the name of a declaration can change later.

Can we just suppress mangling in cases where we reference a symbol without 
knowing if it's internal, then it turns out to be internal later?

https://github.com/llvm/llvm-project/pull/145652
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to