Index: src/IceGlobalInits.h |
diff --git a/src/IceGlobalInits.h b/src/IceGlobalInits.h |
index dac91f7055e8bb135eb3fe21b60b14a87f4dd668..862cc1dd5c77be81b64a666aac63b0e0f8fc3b0f 100644 |
--- a/src/IceGlobalInits.h |
+++ b/src/IceGlobalInits.h |
@@ -61,11 +61,16 @@ public: |
VariableDeclarationKind |
}; |
GlobalDeclarationKind getKind() const { return Kind; } |
- const IceString &getName() const { return Name; } |
- void setName(const IceString &NewName) { |
- Name = getSuppressMangling() ? NewName : mangleName(NewName); |
+ GlobalString getName() const { return Name; } |
+ void setName(GlobalContext *Ctx, const std::string &NewName) { |
+ Name = Ctx->getGlobalString(getSuppressMangling() ? NewName |
+ : mangleName(NewName)); |
} |
- bool hasName() const { return !Name.empty(); } |
+ void setName(GlobalString NewName) { Name = NewName; } |
+ void setName(GlobalContext *Ctx) { |
+ Name = GlobalString::createWithoutString(Ctx); |
+ } |
+ bool hasName() const { return Name.hasStdString(); } |
bool isInternal() const { |
return Linkage == llvm::GlobalValue::InternalLinkage; |
} |
@@ -95,7 +100,7 @@ public: |
/// Returns true if the name of this GlobalDeclaration indicates that it |
/// should have ExternalLinkage (as a special case). |
- virtual bool isPNaClABIExternalName(const IceString &Name) const = 0; |
+ virtual bool isPNaClABIExternalName(const std::string &Name) const = 0; |
protected: |
GlobalDeclaration(GlobalDeclarationKind Kind, |
@@ -117,7 +122,7 @@ protected: |
const GlobalDeclarationKind Kind; |
llvm::GlobalValue::LinkageTypes Linkage; |
- IceString Name; |
+ GlobalString Name; |
}; |
/// Models a function declaration. This includes the type signature of the |
@@ -149,11 +154,13 @@ public: |
/// Returns true if linkage is correct for the function declaration. |
bool verifyLinkageCorrect(const GlobalContext *Ctx) const { |
- if (isPNaClABIExternalName(getName()) || isIntrinsicName(Ctx)) { |
- return Linkage == llvm::GlobalValue::ExternalLinkage; |
- } else { |
- return verifyLinkageDefault(Ctx); |
+ if (getName().hasStdString()) { |
+ if (isPNaClABIExternalName(getName().toString()) || |
+ isIntrinsicName(Ctx)) { |
+ return Linkage == llvm::GlobalValue::ExternalLinkage; |
+ } |
} |
+ return verifyLinkageDefault(Ctx); |
} |
/// Validates that the type signature of the function is correct. Returns true |
@@ -168,7 +175,7 @@ public: |
/// Generates an error message describing why validateTypeSignature returns |
/// false. |
- IceString getTypeSignatureError(const GlobalContext *Ctx); |
+ std::string getTypeSignatureError(const GlobalContext *Ctx); |
/// Returns corresponding PNaCl intrisic information. |
const Intrinsics::FullIntrinsicInfo * |
@@ -193,7 +200,7 @@ private: |
: GlobalDeclaration(FunctionDeclarationKind, Linkage), |
Signature(Signature), CallingConv(CallingConv), IsProto(IsProto) {} |
- bool isPNaClABIExternalName(const IceString &Name) const override { |
+ bool isPNaClABIExternalName(const std::string &Name) const override { |
return Name == "_start"; |
} |
@@ -443,7 +450,7 @@ public: |
// faulty SuppressMangling logic. |
const bool SameMangling = (OldSuppressMangling == getSuppressMangling()); |
(void)SameMangling; |
- assert(!Name.empty() || SameMangling); |
+ assert(Name.hasStdString() || SameMangling); |
} |
/// Prints out type for initializer associated with the declaration to Stream. |
@@ -455,8 +462,10 @@ public: |
/// Returns true if linkage is correct for the variable declaration. |
bool verifyLinkageCorrect(const GlobalContext *Ctx) const { |
- if (isPNaClABIExternalName(getName())) { |
- return Linkage == llvm::GlobalValue::ExternalLinkage; |
+ if (getName().hasStdString()) { |
+ if (isPNaClABIExternalName(getName().toString())) { |
+ return Linkage == llvm::GlobalValue::ExternalLinkage; |
+ } |
} |
return verifyLinkageDefault(Ctx); |
} |
@@ -473,7 +482,7 @@ public: |
void discardInitializers() { Initializers.clear(); } |
- bool isPNaClABIExternalName(const IceString &Name) const override { |
+ bool isPNaClABIExternalName(const std::string &Name) const override { |
return Name == "__pnacl_pso_root"; |
} |