Add unnamed_addr when creating artificial string globals. For example, in

static const char foo[] = "foo";
static const char *bar = "bar";

the global created to hold "bar" will have it, but foo will not.

llvm-svn: 123192
This commit is contained in:
Rafael Espindola
2011-01-10 22:34:03 +00:00
parent d2b48119b0
commit b7f60e3474
10 changed files with 89 additions and 86 deletions

View File

@@ -1749,9 +1749,12 @@ static llvm::Constant *GenerateStringLiteral(const std::string &str,
llvm::ConstantArray::get(CGM.getLLVMContext(), str, false);
// Create a global variable for this string
return new llvm::GlobalVariable(CGM.getModule(), C->getType(), constant,
llvm::GlobalValue::PrivateLinkage,
C, GlobalName);
llvm::GlobalVariable *GV =
new llvm::GlobalVariable(CGM.getModule(), C->getType(), constant,
llvm::GlobalValue::PrivateLinkage,
C, GlobalName);
GV->setUnnamedAddr(true);
return GV;
}
/// GetAddrOfConstantString - Returns a pointer to a character array