зеркало из https://github.com/microsoft/clang-1.git
PR1963: Address of function is a constant expression
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
730f2c13e8
Коммит
63f067f5a7
|
@ -453,6 +453,8 @@ bool Expr::hasGlobalStorage() const {
|
||||||
const Decl *D = cast<DeclRefExpr>(this)->getDecl();
|
const Decl *D = cast<DeclRefExpr>(this)->getDecl();
|
||||||
if (const VarDecl *VD = dyn_cast<VarDecl>(D))
|
if (const VarDecl *VD = dyn_cast<VarDecl>(D))
|
||||||
return VD->hasGlobalStorage();
|
return VD->hasGlobalStorage();
|
||||||
|
if (isa<FunctionDecl>(D))
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
case MemberExprClass: {
|
case MemberExprClass: {
|
||||||
|
|
|
@ -5,3 +5,6 @@ int a[] = {0};
|
||||||
struct { int i; } s;
|
struct { int i; } s;
|
||||||
|
|
||||||
int *array[] = {&i, a, &s.i};
|
int *array[] = {&i, a, &s.i};
|
||||||
|
|
||||||
|
extern void f(void);
|
||||||
|
void (*f_addr)(void) = &f;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче