summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-04-23 22:33:39 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-04-23 22:33:39 +0000
commitd3fa70181d5c11debf30aafa2cdfda46e6b8fbc9 (patch)
tree783ee55332b10419316602975fd6eaac95f714d2 /clang/lib/CodeGen/CodeGenModule.cpp
parent9759793855c97829238e1997785625749bd7b6ec (diff)
downloadbcm5719-llvm-d3fa70181d5c11debf30aafa2cdfda46e6b8fbc9.tar.gz
bcm5719-llvm-d3fa70181d5c11debf30aafa2cdfda46e6b8fbc9.zip
More -fno-constant-cfstrings API work.
llvm-svn: 102219
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index ee02e9374e3..599df96723c 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -1610,12 +1610,14 @@ CodeGenModule::GetAddrOfConstantNSString(const StringLiteral *Literal) {
llvm::Constant::getNullValue(llvm::Type::getInt32Ty(VMContext));
llvm::Constant *Zeros[] = { Zero, Zero };
- // If we don't already have it, get __NSConstantStringClassReference.
+ // If we don't already have it, get _NSConstantStringClassReference.
if (!NSConstantStringClassRef) {
const llvm::Type *Ty = getTypes().ConvertType(getContext().IntTy);
Ty = llvm::ArrayType::get(Ty, 0);
- llvm::Constant *GV = CreateRuntimeVariable(Ty,
- "__NSConstantStringClassReference");
+ llvm::Constant *GV = CreateRuntimeVariable(Ty,
+ Features.ObjCNonFragileABI ?
+ "OBJC_CLASS_$_NSConstantString" :
+ "_NSConstantStringClassReference");
// Decay array -> ptr
NSConstantStringClassRef =
llvm::ConstantExpr::getGetElementPtr(GV, Zeros, 2);
@@ -1666,7 +1668,10 @@ CodeGenModule::GetAddrOfConstantNSString(const StringLiteral *Literal) {
llvm::GlobalVariable::PrivateLinkage, C,
"_unnamed_nsstring_");
// FIXME. Fix section.
- if (const char *Sect = getContext().Target.getNSStringSection())
+ if (const char *Sect =
+ Features.ObjCNonFragileABI
+ ? getContext().Target.getNSStringNonFragileABISection()
+ : getContext().Target.getNSStringSection())
GV->setSection(Sect);
Entry.setValue(GV);
OpenPOWER on IntegriCloud