From: Jakub Jelinek Date: Mon, 5 Mar 2018 22:12:45 +0000 (+0100) Subject: re PR c++/84684 (inserting random code / flags produces wrong code) X-Git-Tag: upstream/12.2.0~33029 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=46cf7fa13bc81496856b23f9100d76b8bfbbb437;p=platform%2Fupstream%2Fgcc.git re PR c++/84684 (inserting random code / flags produces wrong code) PR c++/84684 * constexpr.c (constexpr_call_hasher::equal): Return false if lhs->hash != rhs->hash. Change return 1 to return true and return 0 to return false. From-SVN: r258262 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3218814..5e62b1c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2018-03-05 Jakub Jelinek + + PR c++/84684 + * constexpr.c (constexpr_call_hasher::equal): Return false if + lhs->hash != rhs->hash. Change return 1 to return true and + return 0 to return false. + 2018-03-05 Nathan Sidwell PR c++/84702 diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index 27f841d..941562eb 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -1033,9 +1033,11 @@ constexpr_call_hasher::equal (constexpr_call *lhs, constexpr_call *rhs) tree lhs_bindings; tree rhs_bindings; if (lhs == rhs) - return 1; + return true; + if (lhs->hash != rhs->hash) + return false; if (!constexpr_fundef_hasher::equal (lhs->fundef, rhs->fundef)) - return 0; + return false; lhs_bindings = lhs->bindings; rhs_bindings = rhs->bindings; while (lhs_bindings != NULL && rhs_bindings != NULL) @@ -1044,7 +1046,7 @@ constexpr_call_hasher::equal (constexpr_call *lhs, constexpr_call *rhs) tree rhs_arg = TREE_VALUE (rhs_bindings); gcc_assert (TREE_TYPE (lhs_arg) == TREE_TYPE (rhs_arg)); if (!cp_tree_equal (lhs_arg, rhs_arg)) - return 0; + return false; lhs_bindings = TREE_CHAIN (lhs_bindings); rhs_bindings = TREE_CHAIN (rhs_bindings); }