aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2024-09-15 11:34:43 +0200
committerJason Merrill <jason@redhat.com>2024-09-15 17:49:07 +0200
commita9f9391e1eeccb9d062b9e73ef27ac577b23ed64 (patch)
tree5cc90a4d3a49c23fedc8339442abec008744aecb /gcc/cp
parent5ef73ba1cc17b8893ad9a4e95f9cd191dbc0bfa3 (diff)
downloadgcc-a9f9391e1eeccb9d062b9e73ef27ac577b23ed64.zip
gcc-a9f9391e1eeccb9d062b9e73ef27ac577b23ed64.tar.gz
gcc-a9f9391e1eeccb9d062b9e73ef27ac577b23ed64.tar.bz2
c++: __extension__ and -Wconditionally-supported
When we're explicitly choosing GCC extensions, we similarly shouldn't complain about optional features that GCC provides. This particular pattern of cast between function and object pointer is used by gthr-posix.h on some targets, including linux-gnu before glibc 2.34. gcc/cp/ChangeLog: * parser.cc (cp_parser_unary_expression) [RID_EXTENSION]: Also suppress -Wconditionally-supported. gcc/testsuite/ChangeLog: * g++.dg/warn/Wconditionally-supported-1.C: Add __extension__ cases.
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/parser.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index 3c8c755..4dd9474 100644
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -9150,9 +9150,15 @@ cp_parser_unary_expression (cp_parser *parser, cp_id_kind * pidk,
/* Save away the PEDANTIC flag. */
cp_parser_extension_opt (parser, &saved_pedantic);
+ /* Also suppress -Wconditionally-supported. */
+ diagnostic_push_diagnostics (global_dc, input_location);
+ diagnostic_classify_diagnostic
+ (global_dc, OPT_Wconditionally_supported,
+ DK_IGNORED, input_location);
/* Parse the cast-expression. */
expr = cp_parser_simple_cast_expression (parser);
/* Restore the PEDANTIC flag. */
+ diagnostic_pop_diagnostics (global_dc, input_location);
pedantic = saved_pedantic;
return expr;