forked from OSchip/llvm-project
Explicitly set the string literal type from "char *" to "constant array of char".
At this point, I am fairly certain the front-end is correct. Unfortunately, the back-end is still unhappy. That said, I've commented out the two lines in globalinit.c that are causing problems. Chris, please have a look...thanks! llvm-svn: 44823
This commit is contained in:
parent
c0870605be
commit
f727faf2ed
|
@ -576,6 +576,8 @@ bool Sema::CheckInitializer(Expr *&Init, QualType &DeclType, bool isStatic) {
|
|||
// Return a new array type (C99 6.7.8p22).
|
||||
DeclType = Context.getConstantArrayType(VAT->getElementType(), ConstVal,
|
||||
ArrayType::Normal, 0);
|
||||
// set type from "char *" to "constant array of char".
|
||||
strLiteral->setType(DeclType);
|
||||
return hadError;
|
||||
}
|
||||
const ConstantArrayType *CAT = DeclType->getAsConstantArrayType();
|
||||
|
@ -586,6 +588,8 @@ bool Sema::CheckInitializer(Expr *&Init, QualType &DeclType, bool isStatic) {
|
|||
diag::warn_initializer_string_for_char_array_too_long,
|
||||
strLiteral->getSourceRange());
|
||||
}
|
||||
// set type from "char *" to "constant array of char".
|
||||
strLiteral->setType(DeclType);
|
||||
return hadError;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,6 @@ int latin_ptr2len (char *p);
|
|||
int (*mb_ptr2len) (char *p) = latin_ptr2len;
|
||||
|
||||
|
||||
char string[8] = "string"; // extend init
|
||||
char string2[4] = "string"; // truncate init
|
||||
//char string[8] = "string"; // extend init
|
||||
//char string2[4] = "string"; // truncate init
|
||||
|
||||
|
|
Loading…
Reference in New Issue