+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
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)
{
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
/* 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
+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.
--- /dev/null
+/* { 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);
+}