re PR tree-optimization/63574 (ICE building libjava (segfault) on arm-linux-gnueabihf)

PR ipa/63574
	PR ipa/63664
	* g++.dg/ipa/pr63574.C: New test.
	* ipa-icf-gimple.c (func_checker::parse_labels): Missing comment added.
	(func_checker::compare_gimple_label): Simlified comparison introduced.
	* ipa-icf-gimple.h: Missing comment added.

From-SVN: r216913
This commit is contained in:
Martin Liska 2014-10-30 11:10:58 +01:00 committed by Martin Liska
parent fca380479c
commit 47a668cd26
5 changed files with 69 additions and 1 deletions

View file

@ -1,3 +1,11 @@
2014-10-30 Martin Liska <mliska@suse.cz>
PR ipa/63574
PR ipa/63664
* ipa-icf-gimple.c (func_checker::parse_labels): Missing comment added.
(func_checker::compare_gimple_label): Simlified comparison introduced.
* ipa-icf-gimple.h: Missing comment added.
2014-10-30 Jeff Law <law@redhat.com>
* config/pa/pa-protos.h (pa_output_arg_descriptor): Strengthen

View file

@ -527,6 +527,10 @@ func_checker::compare_variable_decl (tree t1, tree t2)
return return_with_debug (ret);
}
/* Function visits all gimple labels and creates corresponding
mapping between basic blocks and labels. */
void
func_checker::parse_labels (sem_bb *bb)
{
@ -765,7 +769,8 @@ func_checker::compare_gimple_label (gimple g1, gimple g2)
if (FORCED_LABEL (t1) || FORCED_LABEL (t2))
return return_false_with_msg ("FORCED_LABEL");
return compare_tree_ssa_label (t1, t2);
/* As the pass build BB to label mapping, no further check is needed. */
return true;
}
/* Verifies for given GIMPLEs S1 and S2 that

View file

@ -145,6 +145,8 @@ public:
/* Memory release routine. */
~func_checker();
/* Function visits all gimple labels and creates corresponding
mapping between basic blocks and labels. */
void parse_labels (sem_bb *bb);
/* Basic block equivalence comparison function that returns true if

View file

@ -1,3 +1,9 @@
2014-10-30 Martin Liska <mliska@suse.cz>
PR ipa/63574
PR ipa/63664
* g++.dg/ipa/pr63574.C: New test.
2014-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/madd_after_asm_1.c: New test.

View file

@ -0,0 +1,47 @@
/* { dg-do compile } */
/* { dg-options "-O3" } */
class test
{
public:
test (int val, int *p)
{
int_val = *p;
bool_val = (val != int_val);
}
~test ()
{
if (!bool_val)
return;
}
int get_int_val () const
{
return int_val;
}
private:
bool bool_val;
int int_val;
};
static int __attribute__ ((noinline))
f1 (int i, int *p)
{
test obj (i, p);
return obj.get_int_val ();
}
static int __attribute__ ((noinline))
f2 (int i, int *p)
{
test obj (i, p);
return obj.get_int_val ();
}
int
f (int i, int *p)
{
return f1 (i, p) + f2 (i, p);
}