diff options
Diffstat (limited to 'cross/cross-gcc/pr65882.patch')
-rw-r--r-- | cross/cross-gcc/pr65882.patch | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/cross/cross-gcc/pr65882.patch b/cross/cross-gcc/pr65882.patch deleted file mode 100644 index 673712b2b..000000000 --- a/cross/cross-gcc/pr65882.patch +++ /dev/null @@ -1,66 +0,0 @@ -diff --git a/gcc/cp/call.c b/gcc/cp/call.c -index 7bdf236..689d542 100644 ---- a/gcc/cp/call.c -+++ b/gcc/cp/call.c -@@ -5677,8 +5677,9 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1, - case TRUTH_ORIF_EXPR: - case TRUTH_AND_EXPR: - case TRUTH_OR_EXPR: -- warn_logical_operator (loc, code, boolean_type_node, -- code_orig_arg1, arg1, code_orig_arg2, arg2); -+ if (complain & tf_warning) -+ warn_logical_operator (loc, code, boolean_type_node, -+ code_orig_arg1, arg1, code_orig_arg2, arg2); - /* Fall through. */ - case GT_EXPR: - case LT_EXPR: -@@ -5686,8 +5687,9 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1, - case LE_EXPR: - case EQ_EXPR: - case NE_EXPR: -- if ((code_orig_arg1 == BOOLEAN_TYPE) -- ^ (code_orig_arg2 == BOOLEAN_TYPE)) -+ if ((complain & tf_warning) -+ && ((code_orig_arg1 == BOOLEAN_TYPE) -+ ^ (code_orig_arg2 == BOOLEAN_TYPE))) - maybe_warn_bool_compare (loc, code, arg1, arg2); - /* Fall through. */ - case PLUS_EXPR: -diff --git a/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C b/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C -new file mode 100644 -index 0000000..5655eb4 ---- /dev/null -+++ b/gcc/testsuite/g++.dg/diagnostic/inhibit-warn.C -@@ -0,0 +1,32 @@ -+// PR c++/65882 -+// { dg-do compile { target c++11 } } -+// { dg-options "-Wbool-compare" } -+ -+// Check that we don't ICE because of reentering error reporting routines while -+// evaluating template parameters -+ -+template<typename> -+struct type_function { -+ static constexpr bool value = false; -+}; -+ -+template<bool> -+struct dependent_type { -+ typedef int type; -+}; -+ -+template<typename T> -+typename dependent_type<(5 > type_function<T>::value)>::type -+bar(); -+ -+template<typename T> -+typename dependent_type<(5 > type_function<T>::value)>::type -+foo() -+{ -+ return bar<int>(); -+} -+ -+int main() -+{ -+ foo<int>(); -+} |