diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-03-30 22:15:11 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-03-30 22:15:11 +0000 |
| commit | 49b85ab6e696948452a7809909aaf2757fdaaf5a (patch) | |
| tree | 24136847c945b637ef5aa46354c625137c39a0d5 /clang/lib/Frontend | |
| parent | 998d51b98f3716b5109d666243f9e0d69c9963dc (diff) | |
| download | bcm5719-llvm-49b85ab6e696948452a7809909aaf2757fdaaf5a.tar.gz bcm5719-llvm-49b85ab6e696948452a7809909aaf2757fdaaf5a.zip | |
Remember the regparm attribute in FunctionType::ExtInfo.
Fixes PR3782.
llvm-svn: 99940
Diffstat (limited to 'clang/lib/Frontend')
| -rw-r--r-- | clang/lib/Frontend/PCHReader.cpp | 12 | ||||
| -rw-r--r-- | clang/lib/Frontend/PCHWriter.cpp | 1 |
2 files changed, 8 insertions, 5 deletions
diff --git a/clang/lib/Frontend/PCHReader.cpp b/clang/lib/Frontend/PCHReader.cpp index ceb7a6bf57b..579f827e16b 100644 --- a/clang/lib/Frontend/PCHReader.cpp +++ b/clang/lib/Frontend/PCHReader.cpp @@ -2075,20 +2075,21 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) { } case pch::TYPE_FUNCTION_NO_PROTO: { - if (Record.size() != 3) { + if (Record.size() != 4) { Error("incorrect encoding of no-proto function type"); return QualType(); } QualType ResultType = GetType(Record[0]); - FunctionType::ExtInfo Info(Record[1], (CallingConv)Record[2]); + FunctionType::ExtInfo Info(Record[1], Record[2], (CallingConv)Record[3]); return Context->getFunctionNoProtoType(ResultType, Info); } case pch::TYPE_FUNCTION_PROTO: { QualType ResultType = GetType(Record[0]); bool NoReturn = Record[1]; - CallingConv CallConv = (CallingConv)Record[2]; - unsigned Idx = 3; + unsigned RegParm = Record[2]; + CallingConv CallConv = (CallingConv)Record[3]; + unsigned Idx = 4; unsigned NumParams = Record[Idx++]; llvm::SmallVector<QualType, 16> ParamTypes; for (unsigned I = 0; I != NumParams; ++I) @@ -2105,7 +2106,8 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) { isVariadic, Quals, hasExceptionSpec, hasAnyExceptionSpec, NumExceptions, Exceptions.data(), - FunctionType::ExtInfo(NoReturn, CallConv)); + FunctionType::ExtInfo(NoReturn, RegParm, + CallConv)); } case pch::TYPE_UNRESOLVED_USING: diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index b4fbd17bd67..5086b488f6d 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -143,6 +143,7 @@ void PCHTypeWriter::VisitFunctionType(const FunctionType *T) { Writer.AddTypeRef(T->getResultType(), Record); FunctionType::ExtInfo C = T->getExtInfo(); Record.push_back(C.getNoReturn()); + Record.push_back(C.getRegParm()); // FIXME: need to stabilize encoding of calling convention... Record.push_back(C.getCC()); } |

