re PR ipa/66705 (section is missing linker error with -flto -fipa-pta)
2015-09-03 Richard Biener <rguenther@suse.de> PR ipa/66705 * tree-ssa-structalias.c (ctor_for_analysis): New function. (create_variable_info_for_1): Use ctor_for_analysis instead of get_constructor. (create_variable_info_for): Likewise. * g++.dg/lto/pr66705_0.C: New testcase. From-SVN: r227430
This commit is contained in:
parent
37d13ae648
commit
27e2bd9f39
4 changed files with 34 additions and 9 deletions
|
@ -1,3 +1,11 @@
|
|||
2015-09-03 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR ipa/66705
|
||||
* tree-ssa-structalias.c (ctor_for_analysis): New function.
|
||||
(create_variable_info_for_1): Use ctor_for_analysis instead
|
||||
of get_constructor.
|
||||
(create_variable_info_for): Likewise.
|
||||
|
||||
2015-09-02 Charles Baylis <charles.baylis@linaro.org>
|
||||
|
||||
* cgraphunit.c (cgraph_node::create_wrapper): Set can_throw_external
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2015-09-03 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR ipa/66705
|
||||
* g++.dg/lto/pr66705_0.C: New testcase.
|
||||
|
||||
2015-09-02 Balaji V. Iyer <balaji.v.iyer@intel.com>
|
||||
|
||||
PR middle-end/60586
|
||||
|
|
15
gcc/testsuite/g++.dg/lto/pr66705_0.C
Normal file
15
gcc/testsuite/g++.dg/lto/pr66705_0.C
Normal file
|
@ -0,0 +1,15 @@
|
|||
// { dg-lto-do link }
|
||||
// { dg-lto-options { { -O2 -flto -flto-partition=max -fipa-pta } } }
|
||||
// { dg-extra-ld-options "-r -nostdlib" }
|
||||
|
||||
class A {
|
||||
public:
|
||||
A();
|
||||
};
|
||||
int a = 0;
|
||||
void foo() {
|
||||
a = 0;
|
||||
A b;
|
||||
for (; a;)
|
||||
;
|
||||
}
|
|
@ -5619,7 +5619,6 @@ create_variable_info_for_1 (tree decl, const char *name)
|
|||
auto_vec<fieldoff_s> fieldstack;
|
||||
fieldoff_s *fo;
|
||||
unsigned int i;
|
||||
varpool_node *vnode;
|
||||
|
||||
if (!declsize
|
||||
|| !tree_fits_uhwi_p (declsize))
|
||||
|
@ -5637,12 +5636,10 @@ create_variable_info_for_1 (tree decl, const char *name)
|
|||
/* Collect field information. */
|
||||
if (use_field_sensitive
|
||||
&& var_can_have_subvars (decl)
|
||||
/* ??? Force us to not use subfields for global initializers
|
||||
in IPA mode. Else we'd have to parse arbitrary initializers. */
|
||||
/* ??? Force us to not use subfields for globals in IPA mode.
|
||||
Else we'd have to parse arbitrary initializers. */
|
||||
&& !(in_ipa_mode
|
||||
&& is_global_var (decl)
|
||||
&& (vnode = varpool_node::get (decl))
|
||||
&& vnode->get_constructor ()))
|
||||
&& is_global_var (decl)))
|
||||
{
|
||||
fieldoff_s *fo = NULL;
|
||||
bool notokay = false;
|
||||
|
@ -5774,13 +5771,13 @@ create_variable_info_for (tree decl, const char *name)
|
|||
|
||||
/* If this is a global variable with an initializer and we are in
|
||||
IPA mode generate constraints for it. */
|
||||
if (vnode->get_constructor ()
|
||||
&& vnode->definition)
|
||||
ipa_ref *ref;
|
||||
for (unsigned idx = 0; vnode->iterate_reference (idx, ref); ++idx)
|
||||
{
|
||||
auto_vec<ce_s> rhsc;
|
||||
struct constraint_expr lhs, *rhsp;
|
||||
unsigned i;
|
||||
get_constraint_for_rhs (vnode->get_constructor (), &rhsc);
|
||||
get_constraint_for_address_of (ref->referred->decl, &rhsc);
|
||||
lhs.var = vi->id;
|
||||
lhs.offset = 0;
|
||||
lhs.type = SCALAR;
|
||||
|
|
Loading…
Add table
Reference in a new issue