diff options
author | Charles Davis <cdavis@mines.edu> | 2010-07-03 08:15:16 +0000 |
---|---|---|
committer | Charles Davis <cdavis@mines.edu> | 2010-07-03 08:15:16 +0000 |
commit | 3b10dd1bec4b0761ade4f0baf28b8b2b2c0e1d7d (patch) | |
tree | 1b02531ee7dcf3278399e8d21177753a9c96753c /clang/lib/CodeGen/MicrosoftCXXABI.cpp | |
parent | d49950a3177865fbae29ad01272269701d4e519a (diff) | |
download | bcm5719-llvm-3b10dd1bec4b0761ade4f0baf28b8b2b2c0e1d7d.tar.gz bcm5719-llvm-3b10dd1bec4b0761ade4f0baf28b8b2b2c0e1d7d.zip |
Fix mangling of array dimensions in the Microsoft C++ Mangler.
llvm-svn: 107568
Diffstat (limited to 'clang/lib/CodeGen/MicrosoftCXXABI.cpp')
-rw-r--r-- | clang/lib/CodeGen/MicrosoftCXXABI.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp index 1f3d788df1a..b459ae2110b 100644 --- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -289,8 +289,8 @@ void MicrosoftCXXNameMangler::mangleNumber(int64_t Number) { Out << '?'; Number = -Number; } - if (Number <= 9) { - Out << Number; + if (Number >= 1 && Number <= 10) { + Out << Number-1; } else { // We have to build up the encoding in reverse order, so it will come // out right when we write it out. @@ -935,8 +935,8 @@ void MicrosoftCXXNameMangler::mangleType(const TagType *T) { break; case TTK_Enum: Out << 'W'; - mangleNumber(getASTContext().getTypeSizeInChars( - cast<EnumDecl>(T->getDecl())->getIntegerType()).getQuantity()); + Out << getASTContext().getTypeSizeInChars( + cast<EnumDecl>(T->getDecl())->getIntegerType()).getQuantity(); break; } mangleName(T->getDecl()); @@ -977,7 +977,7 @@ void MicrosoftCXXNameMangler::mangleExtraDimensions(QualType ElementTy) { if (ElementTy->isConstantArrayType()) { const ConstantArrayType *CAT = static_cast<const ConstantArrayType *>(ElementTy.getTypePtr()); - Dimensions.push_back(CAT->getSize()-1); + Dimensions.push_back(CAT->getSize()); ElementTy = CAT->getElementType(); } else if (ElementTy->isVariableArrayType()) { assert(false && "Don't know how to mangle VLAs!"); @@ -991,8 +991,8 @@ void MicrosoftCXXNameMangler::mangleExtraDimensions(QualType ElementTy) { // If there are any additional dimensions, mangle them now. if (Dimensions.size() > 0) { Out << 'Y'; - // <dimension-count> ::= <number> # number of extra dimensions minus 1 - mangleNumber(Dimensions.size()-1); + // <dimension-count> ::= <number> # number of extra dimensions + mangleNumber(Dimensions.size()); for (unsigned Dim = 0; Dim < Dimensions.size(); ++Dim) { mangleNumber(Dimensions[Dim].getLimitedValue()); } |