This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix PR77697
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 23 Sep 2016 14:35:36 +0200 (CEST)
- Subject: [PATCH] Fix PR77697
- Authentication-results: sourceware.org; auth=none
As noted in the PR defcodefor_name was quite broken - the following
rectifies it.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard.
2016-09-23 Richard Biener <rguenther@suse.de>
PR tree-optimization/77697
* tree-ssa-forwprop.c (defcodefor_name): Remove bogus code,
signal error if we have sth ternary or unhandled.
Index: gcc/tree-ssa-forwprop.c
===================================================================
--- gcc/tree-ssa-forwprop.c (revision 240388)
+++ gcc/tree-ssa-forwprop.c (working copy)
@@ -1458,6 +1458,7 @@ defcodefor_name (tree name, enum tree_co
code1 = TREE_CODE (name);
arg11 = name;
arg21 = NULL_TREE;
+ arg31 = NULL_TREE;
grhs_class = get_gimple_rhs_class (code1);
if (code1 == SSA_NAME)
@@ -1470,20 +1471,18 @@ defcodefor_name (tree name, enum tree_co
code1 = gimple_assign_rhs_code (def);
arg11 = gimple_assign_rhs1 (def);
arg21 = gimple_assign_rhs2 (def);
- arg31 = gimple_assign_rhs2 (def);
+ arg31 = gimple_assign_rhs3 (def);
}
}
- else if (grhs_class == GIMPLE_TERNARY_RHS
- || GIMPLE_BINARY_RHS
- || GIMPLE_UNARY_RHS
- || GIMPLE_SINGLE_RHS)
- extract_ops_from_tree (name, &code1, &arg11, &arg21, &arg31);
+ else if (grhs_class != GIMPLE_SINGLE_RHS)
+ code1 = ERROR_MARK;
*code = code1;
*arg1 = arg11;
if (arg2)
*arg2 = arg21;
- /* Ignore arg3 currently. */
+ if (arg31)
+ *code = ERROR_MARK;
}