diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-05-27 22:13:20 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-05-27 22:13:20 +0000 |
commit | 6ffb623a5209e4b59536f1be17e15d60127a8467 (patch) | |
tree | ff1937725e764d2ec0480a7362829d07cf8a5c10 /clang | |
parent | d23bfb8a7aa12dbea5c9fb382b3c1cbf5bffc51f (diff) | |
download | bcm5719-llvm-6ffb623a5209e4b59536f1be17e15d60127a8467.tar.gz bcm5719-llvm-6ffb623a5209e4b59536f1be17e15d60127a8467.zip |
Match llvm-gcc's string literals alignment by forcing alignment on string literals to 1. This can significantly impact the size of the string data, and as far as I know, the alignment doesn't help performance. rdar://9078969 .
llvm-svn: 132223
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 1 | ||||
-rw-r--r-- | clang/test/CodeGen/string-literal.c | 4 |
2 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 987ebffd97d..de11a29f67b 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -1899,6 +1899,7 @@ static llvm::Constant *GenerateStringLiteral(llvm::StringRef str, new llvm::GlobalVariable(CGM.getModule(), C->getType(), constant, llvm::GlobalValue::PrivateLinkage, C, GlobalName); + GV->setAlignment(1); GV->setUnnamedAddr(true); return GV; } diff --git a/clang/test/CodeGen/string-literal.c b/clang/test/CodeGen/string-literal.c index 6d02b0fdaf9..b5fa345bada 100644 --- a/clang/test/CodeGen/string-literal.c +++ b/clang/test/CodeGen/string-literal.c @@ -8,9 +8,9 @@ int main() { // CHECK: internal constant [10 x i8] c"\E1\84\A0\C8\A0\F4\82\80\B0\00", align 1 char b[10] = "\u1120\u0220\U00102030"; - // CHECK: private unnamed_addr constant [12 x i8] c"A\00\00\00B\00\00\00\00\00\00\00" + // CHECK: private unnamed_addr constant [12 x i8] c"A\00\00\00B\00\00\00\00\00\00\00", align 1 void *foo = L"AB"; - // CHECK: private unnamed_addr constant [12 x i8] c"4\12\00\00\0B\F0\10\00\00\00\00\00" + // CHECK: private unnamed_addr constant [12 x i8] c"4\12\00\00\0B\F0\10\00\00\00\00\00", align 1 void *bar = L"\u1234\U0010F00B"; } |