re PR c++/57945 (ICE: in varpool_get_node, at cgraph.h:840)
PR c++/57945 * passes.c (rest_of_decl_compilation): Don't call varpool_finalize_decl on decls for which assemble_alias has been called. * c-c++-common/torture/pr57945.c: New test. From-SVN: r206708
This commit is contained in:
parent
d4f283a153
commit
24fcf4bc0c
@ -1,3 +1,9 @@
|
||||
2014-01-17 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
PR c++/57945
|
||||
* passes.c (rest_of_decl_compilation): Don't call varpool_finalize_decl
|
||||
on decls for which assemble_alias has been called.
|
||||
|
||||
2014-01-17 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/msp430/msp430.opt: (mcpu): New option.
|
||||
|
@ -187,6 +187,8 @@ rest_of_decl_compilation (tree decl,
|
||||
int top_level,
|
||||
int at_end)
|
||||
{
|
||||
bool finalize = true;
|
||||
|
||||
/* We deferred calling assemble_alias so that we could collect
|
||||
other attributes such as visibility. Emit the alias now. */
|
||||
if (!in_lto_p)
|
||||
@ -203,6 +205,7 @@ rest_of_decl_compilation (tree decl,
|
||||
DECL_EXTERNAL (decl) = 0;
|
||||
TREE_STATIC (decl) = 1;
|
||||
assemble_alias (decl, alias);
|
||||
finalize = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -234,7 +237,7 @@ rest_of_decl_compilation (tree decl,
|
||||
rebuild it. */
|
||||
if (in_lto_p && !at_end)
|
||||
;
|
||||
else if (TREE_CODE (decl) != FUNCTION_DECL)
|
||||
else if (finalize && TREE_CODE (decl) != FUNCTION_DECL)
|
||||
varpool_finalize_decl (decl);
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2014-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/57945
|
||||
* c-c++-common/torture/pr57945.c: New test.
|
||||
|
||||
2014-01-17 Zhenqiang Chen <zhenqiang.chen@arm.com>
|
||||
|
||||
* gcc.target/arm/its.c: New testcase.
|
||||
|
11
gcc/testsuite/c-c++-common/torture/pr57945.c
Normal file
11
gcc/testsuite/c-c++-common/torture/pr57945.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* PR c++/57945 */
|
||||
/* { dg-do compile } */
|
||||
|
||||
extern int j;
|
||||
static int i __attribute__((weakref("j")));
|
||||
|
||||
int
|
||||
foo (void)
|
||||
{
|
||||
return &i ? i : 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user