forked from OSchip/llvm-project
Revert r221404 which caused lldb to not display
vararg expressions. llvm-svn: 221533
This commit is contained in:
parent
083eb00d9d
commit
c48f7e76fa
|
@ -13343,39 +13343,6 @@ ExprResult RebuildUnknownAnyExpr::resolveDecl(Expr *E, ValueDecl *VD) {
|
|||
<< VD << E->getSourceRange();
|
||||
return ExprError();
|
||||
}
|
||||
if (const FunctionProtoType *FT = Type->getAs<FunctionProtoType>()) {
|
||||
// We must match the FunctionDecl's type to the hack introduced in
|
||||
// RebuildUnknownAnyExpr::VisitCallExpr to vararg functions of unknown
|
||||
// type. See the lengthy commentary in that routine.
|
||||
QualType FDT = FD->getType();
|
||||
const FunctionType *FnType = FDT->castAs<FunctionType>();
|
||||
const FunctionProtoType *Proto = dyn_cast_or_null<FunctionProtoType>(FnType);
|
||||
DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E);
|
||||
if (DRE && Proto && Proto->getParamTypes().empty() && Proto->isVariadic()) {
|
||||
SourceLocation Loc = FD->getLocation();
|
||||
FunctionDecl *NewFD = FunctionDecl::Create(FD->getASTContext(),
|
||||
FD->getDeclContext(),
|
||||
Loc, Loc, FD->getNameInfo().getName(),
|
||||
DestType, FD->getTypeSourceInfo(),
|
||||
SC_None, false/*isInlineSpecified*/,
|
||||
FD->hasPrototype(),
|
||||
false/*isConstexprSpecified*/);
|
||||
|
||||
if (FD->getQualifier())
|
||||
NewFD->setQualifierInfo(FD->getQualifierLoc());
|
||||
|
||||
SmallVector<ParmVarDecl*, 16> Params;
|
||||
for (const auto &AI : FT->param_types()) {
|
||||
ParmVarDecl *Param =
|
||||
S.BuildParmVarDeclForTypedef(FD, Loc, AI);
|
||||
Param->setScopeInfo(0, Params.size());
|
||||
Params.push_back(Param);
|
||||
}
|
||||
NewFD->setParams(Params);
|
||||
DRE->setDecl(NewFD);
|
||||
VD = DRE->getDecl();
|
||||
}
|
||||
}
|
||||
|
||||
if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD))
|
||||
if (MD->isInstance()) {
|
||||
|
|
|
@ -115,9 +115,3 @@ extern "C" __unknown_anytype test10_any(...);
|
|||
void test10() {
|
||||
(void) test10_any(), (void) test10_any();
|
||||
}
|
||||
|
||||
extern "C" __unknown_anytype malloc(...);
|
||||
void test11() {
|
||||
void *s = (void*)malloc(12);
|
||||
void *d = (void*)malloc(435);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue