PR tree-optimization/43367
* tree-cfg.c (gimple_can_merge_blocks_p): Simplify PHI
elimination check.
* gcc.c-torture/compile/pr43367.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157458
138bc75d-0d04-0410-961f-
82ee72b054a4
2010-03-15 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/43367
+ * tree-cfg.c (gimple_can_merge_blocks_p): Simplify PHI
+ elimination check.
+
+2010-03-15 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/43317
* ipa-struct-reorg.c (create_new_general_access): Update stmt.
2010-03-15 Richard Guenther <rguenther@suse.de>
+ PR tree-optimization/43367
+ * gcc.c-torture/compile/pr43367.c: New testcase.
+
+2010-03-15 Richard Guenther <rguenther@suse.de>
+
PR tree-optimization/43317
* gcc.dg/pr43317.c: New testcase.
--- /dev/null
+unsigned char g_17;
+
+const unsigned char func_39 (unsigned char p_40, unsigned char * p_41)
+{
+ return 0;
+}
+
+void int327 (const unsigned char p_48, unsigned char p_49)
+{
+ unsigned l_52;
+ unsigned char l_58[2];
+ int i, j;
+ if (func_39 (l_52, &p_49), p_48) {
+ unsigned char *l_60;
+ unsigned char *l = &l_58[1];
+ for (j; j; j++) {
+lbl_59:
+ break;
+ }
+ for (l = 0; 1; l += 1) {
+ for (p_49 = 1; p_49; p_49 += 0) {
+ unsigned char **l_61[1][6];
+ for (j = 0; j < 1; j++)
+ l_61[i][j] = &l_60;
+ goto lbl_59;
+ }
+ }
+ }
+}
+
return false;
/* It must be possible to eliminate all phi nodes in B. If ssa form
- is not up-to-date, we cannot eliminate any phis; however, if only
- some symbols as whole are marked for renaming, this is not a problem,
- as phi nodes for those symbols are irrelevant in updating anyway. */
+ is not up-to-date and a name-mapping is registered, we cannot eliminate
+ any phis. Symbols marked for renaming are never a problem though. */
phis = phi_nodes (b);
- if (!gimple_seq_empty_p (phis))
- {
- gimple_stmt_iterator i;
-
- if (name_mappings_registered_p ())
- return false;
-
- for (i = gsi_start (phis); !gsi_end_p (i); gsi_next (&i))
- {
- gimple phi = gsi_stmt (i);
-
- if (!is_gimple_reg (gimple_phi_result (phi))
- && !may_propagate_copy (gimple_phi_result (phi),
- gimple_phi_arg_def (phi, 0)))
- return false;
- }
- }
+ if (!gimple_seq_empty_p (phis)
+ && name_mappings_registered_p ())
+ return false;
return true;
}