summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2012-03-09 03:06:56 +0000
committerEli Friedman <eli.friedman@gmail.com>2012-03-09 03:06:56 +0000
commiteffcd47eef464765c84130b667ef296da104756e (patch)
tree8745231f3534d28da539093bcc97ac57e18fe5f4 /clang/lib/CodeGen
parent1bb80affe85d3497457645dd20957136f708468a (diff)
downloadbcm5719-llvm-effcd47eef464765c84130b667ef296da104756e.tar.gz
bcm5719-llvm-effcd47eef464765c84130b667ef296da104756e.zip
Make sure constant emission handles initializer lists with strings correctly. Part of <rdar://problem/10957867>.
llvm-svn: 152370
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGExprConstant.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp
index 61c10bbe4f3..fb019f4d00a 100644
--- a/clang/lib/CodeGen/CGExprConstant.cpp
+++ b/clang/lib/CodeGen/CGExprConstant.cpp
@@ -763,7 +763,9 @@ public:
llvm::Constant *EmitArrayInitialization(InitListExpr *ILE) {
unsigned NumInitElements = ILE->getNumInits();
- if (NumInitElements == 1 && ILE->getType() == ILE->getInit(0)->getType() &&
+ if (NumInitElements == 1 &&
+ CGM.getContext().hasSameUnqualifiedType(ILE->getType(),
+ ILE->getInit(0)->getType()) &&
(isa<StringLiteral>(ILE->getInit(0)) ||
isa<ObjCEncodeExpr>(ILE->getInit(0))))
return Visit(ILE->getInit(0));
OpenPOWER on IntegriCloud