From 46cf7fa13bc81496856b23f9100d76b8bfbbb437 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 5 Mar 2018 23:12:45 +0100 Subject: [PATCH] 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 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/constexpr.c | 8 +++++--- 2 files changed, 12 insertions(+), 3 deletions(-) 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); } -- 2.7.4