Revert r151357. That unreachable is reachable...

llvm-svn: 151359
This commit is contained in:
Nick Lewycky 2012-02-24 09:07:53 +00:00
parent 69d7a91334
commit 4ed840421d
1 changed files with 8 additions and 11 deletions

View File

@ -499,28 +499,25 @@ double FloatingLiteral::getValueAsApproximateDouble() const {
return V.convertToDouble(); return V.convertToDouble();
} }
int StringLiteral::mapCharByteWidth(TargetInfo const &Target, int StringLiteral::mapCharByteWidth(TargetInfo const &target,StringKind k) {
StringKind Kind) {
int CharByteWidth; int CharByteWidth;
switch(Kind) { switch(k) {
case Ascii: case Ascii:
case UTF8: case UTF8:
CharByteWidth = Target.getCharWidth(); CharByteWidth = target.getCharWidth();
break; break;
case Wide: case Wide:
CharByteWidth = Target.getWCharWidth(); CharByteWidth = target.getWCharWidth();
break; break;
case UTF16: case UTF16:
CharByteWidth = Target.getChar16Width(); CharByteWidth = target.getChar16Width();
break; break;
case UTF32: case UTF32:
CharByteWidth = Target.getChar32Width(); CharByteWidth = target.getChar32Width();
default:
llvm_unreachable("Don't know byte width of this string kind!");
} }
assert((CharByteWidth & 7) == 0 && "Assumes character size is byte multiple"); assert((CharByteWidth & 7) == 0 && "Assumes character size is byte multiple");
CharByteWidth /= 8; CharByteWidth /= 8;
assert((CharByteWidth == 1 || CharByteWidth == 2 || CharByteWidth == 4) assert((CharByteWidth==1 || CharByteWidth==2 || CharByteWidth==4)
&& "character byte widths supported are 1, 2, and 4 only"); && "character byte widths supported are 1, 2, and 4 only");
return CharByteWidth; return CharByteWidth;
} }
@ -565,7 +562,7 @@ void StringLiteral::setString(ASTContext &C, StringRef Str,
this->Kind = Kind; this->Kind = Kind;
this->IsPascal = IsPascal; this->IsPascal = IsPascal;
CharByteWidth = mapCharByteWidth(C.getTargetInfo(), Kind); CharByteWidth = mapCharByteWidth(C.getTargetInfo(),Kind);
assert((Str.size()%CharByteWidth == 0) assert((Str.size()%CharByteWidth == 0)
&& "size of data must be multiple of CharByteWidth"); && "size of data must be multiple of CharByteWidth");
Length = Str.size()/CharByteWidth; Length = Str.size()/CharByteWidth;