Index: src/IceGlobalInits.h |
diff --git a/src/IceGlobalInits.h b/src/IceGlobalInits.h |
index 8b060419652aab2eaba3c1e32468a69f3c7bf129..4c51606c6419f9aa13428c405a3481baa9c9eb53 100644 |
--- a/src/IceGlobalInits.h |
+++ b/src/IceGlobalInits.h |
@@ -286,9 +286,15 @@ public: |
} |
bool getSuppressMangling() const final { |
+ if (ForceSuppressMangling) |
+ return true; |
return isExternal() && !hasInitializer(); |
} |
+ void setSuppressMangling() { |
+ ForceSuppressMangling = true; |
+ } |
+ |
private: |
// list of initializers for the declared variable. |
InitializerListType Initializers; |
@@ -296,11 +302,13 @@ private: |
uint32_t Alignment; |
// True if a declared (global) constant. |
bool IsConstant; |
+ // If set to true, force getSuppressMangling() to return true. |
+ bool ForceSuppressMangling; |
VariableDeclaration() |
: GlobalDeclaration(VariableDeclarationKind, |
llvm::GlobalValue::InternalLinkage), |
- Alignment(0), IsConstant(false) {} |
+ Alignment(0), IsConstant(false), ForceSuppressMangling(false) {} |
}; |
template <class StreamType> |