]> granicus.if.org Git - clang/commitdiff
Fix brace-enclosed string initializers for char arrays. From pr2079,
authorEli Friedman <eli.friedman@gmail.com>
Thu, 21 Feb 2008 17:45:41 +0000 (17:45 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Thu, 21 Feb 2008 17:45:41 +0000 (17:45 +0000)
ahtough I had the fix in my tree previously.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47439 91177308-0d34-0410-b5e6-96231b3b80d8

CodeGen/CGExprConstant.cpp

index cca5982f6dba60b8760256f593d23506d93e5fe9..2cdd5bbb3ea4e1941b9c92c05a4c4bb1788cc3ff 100644 (file)
@@ -69,9 +69,12 @@ public:
 
   llvm::Constant *EmitArrayInitialization(InitListExpr *ILE,
                                           const llvm::ArrayType *AType) {
-    
-    std::vector<llvm::Constant*> Elts;    
-    unsigned NumInitElements = ILE->getNumInits();      
+    std::vector<llvm::Constant*> Elts;
+    unsigned NumInitElements = ILE->getNumInits();
+    // FIXME: Check for wide strings
+    if (NumInitElements > 0 && isa<StringLiteral>(ILE->getInit(0)) &&
+        ILE->getType()->getAsArrayType()->getElementType()->isCharType())
+      return Visit(ILE->getInit(0));
     const llvm::Type *ElemTy = AType->getElementType();
     unsigned NumElements = AType->getNumElements();