mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 20:41:10 +08:00
compiler: Check for initialization cycles in bound method expressions.
Fixes issue 7961. From-SVN: r216342
This commit is contained in:
parent
960224c3b7
commit
f6e31dffc1
@ -953,13 +953,14 @@ Find_var::expression(Expression** pexpr)
|
||||
}
|
||||
}
|
||||
|
||||
// We traverse the code of any function we see. Note that this
|
||||
// means that we will traverse the code of a function whose address
|
||||
// is taken even if it is not called.
|
||||
// We traverse the code of any function or bound method we see. Note that
|
||||
// this means that we will traverse the code of a function or bound method
|
||||
// whose address is taken even if it is not called.
|
||||
Func_expression* fe = e->func_expression();
|
||||
if (fe != NULL)
|
||||
Bound_method_expression* bme = e->bound_method_expression();
|
||||
if (fe != NULL || bme != NULL)
|
||||
{
|
||||
const Named_object* f = fe->named_object();
|
||||
const Named_object* f = fe != NULL ? fe->named_object() : bme->function();
|
||||
if (f->is_function() && f->package() == NULL)
|
||||
{
|
||||
std::pair<Seen_objects::iterator, bool> ins =
|
||||
|
Loading…
x
Reference in New Issue
Block a user