[Bug middle-end/67239] [6 Regression] FAIL: 23_containers/unordered_set/insert/hash_policy.cc execution test
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 12 08:41:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67239
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #6)
> Does this patch
>
> diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
> index 2ac3828..8b57875 100644
> --- a/gcc/tree-ssa-sccvn.c
> +++ b/gcc/tree-ssa-sccvn.c
> @@ -4372,17 +4372,16 @@ sccvn_dom_walker::before_dom_children (basic_block
> bb)
> {
> gimple *stmt = last_stmt (e->src);
> if (stmt
> - && gimple_code (stmt) == GIMPLE_COND)
> + && gimple_code (stmt) == GIMPLE_COND
> + && (e->flags & EDGE_TRUE_VALUE) != 0)
> {
> enum tree_code code = gimple_cond_code (stmt);
> tree lhs = gimple_cond_lhs (stmt);
> tree rhs = gimple_cond_rhs (stmt);
> - record_conds (bb, code, lhs, rhs,
> - (e->flags & EDGE_TRUE_VALUE) != 0);
> + record_conds (bb, code, lhs, rhs, true);
> code = invert_tree_comparison (code, HONOR_NANS (lhs));
> if (code != ERROR_MARK)
> - record_conds (bb, code, lhs, rhs,
> - (e->flags & EDGE_TRUE_VALUE) == 0);
> + record_conds (bb, code, lhs, rhs, false);
> }
> }
> }
>
> make any senses? Do we need to check EDGE_FALSE_VALUE?
No, even for the false edge we can record proper expressions, see
record_conds and how it handles the cases if the condition was true or false.
Can you please attach -details dumps of the pass instance that does this?
Note that the large number '5368709811' (0x1fffffff) might point to a
different issue elsewhere. Did you double-check that makes sense?
Sorry for not investigating myself but I lack a x32 runtime environment.
It would help if you attach preprocessed source with a pointer to the
function that you believe is miscompiled.
More information about the Gcc-bugs
mailing list