Re: [PATCH] c-family, c++: Handle EXCESS_PRECISION_EXPR in pretty printers
On 3/22/24 05:11, Jakub Jelinek wrote: Hi! I've noticed that the c-c++-common/gomp/depobj-3.c test FAILs on i686-linux: PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 17 (test for warnings, line 15) FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 at line 39 (test for warnings, line 37) PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 43 (test for errors, line 41) PASS: c-c++-common/gomp/depobj-3.c -std=c++17 (test for warnings, line 45) FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 (test for excess errors) Excess errors: /home/jakub/src/gcc/gcc/testsuite/c-c++-common/gomp/depobj-3.c:37:38: warning: the 'destroy' expression ''excess_precision_expr' not supported by dump_expr' should be the same as the 'depobj' argument 'obj' [-Wopenmp] The following patch replaces that 'excess_precision_expr' not supported by dump_expr with (float)(((long double)a) + (long double)5) Still ugly and doesn't actually fix the FAIL (will deal with that incrementally), but at least valid C/C++ and shows the excess precision handling in action. Ok for trunk if this passes bootstrap/regtest? OK. 2024-03-22 Jakub Jelinek gcc/c/ * c-pretty-print.cc (pp_c_cast_expression, c_pretty_printer::expression): Handle EXCESS_PRECISION_EXPR like NOP_EXPR. gcc/cp/ * error.cc (dump_expr): Handle EXCESS_PRECISION_EXPR like NOP_EXPR. --- gcc/c-family/c-pretty-print.cc.jj 2024-01-12 10:07:57.744858004 +0100 +++ gcc/c-family/c-pretty-print.cc 2024-03-22 09:58:56.640001991 +0100 @@ -2327,6 +2327,7 @@ pp_c_cast_expression (c_pretty_printer * case FIX_TRUNC_EXPR: CASE_CONVERT: case VIEW_CONVERT_EXPR: +case EXCESS_PRECISION_EXPR: if (!location_wrapper_p (e)) pp_c_type_cast (pp, TREE_TYPE (e)); pp_c_cast_expression (pp, TREE_OPERAND (e, 0)); @@ -2753,6 +2754,7 @@ c_pretty_printer::expression (tree e) case FIX_TRUNC_EXPR: CASE_CONVERT: case VIEW_CONVERT_EXPR: +case EXCESS_PRECISION_EXPR: pp_c_cast_expression (this, e); break; --- gcc/cp/error.cc.jj 2024-01-20 12:32:34.157939870 +0100 +++ gcc/cp/error.cc 2024-03-22 10:00:38.259610171 +0100 @@ -2662,6 +2662,7 @@ dump_expr (cxx_pretty_printer *pp, tree CASE_CONVERT: case IMPLICIT_CONV_EXPR: case VIEW_CONVERT_EXPR: +case EXCESS_PRECISION_EXPR: { tree op = TREE_OPERAND (t, 0); Jakub
Re: [PATCH] c-family, c++: Handle EXCESS_PRECISION_EXPR in pretty printers
On Fri, 22 Mar 2024, Jakub Jelinek wrote: > Hi! > > I've noticed that the c-c++-common/gomp/depobj-3.c test FAILs on i686-linux: > PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 17 (test for > warnings, line 15) > FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 at line 39 (test for > warnings, line 37) > PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 43 (test for errors, > line 41) > PASS: c-c++-common/gomp/depobj-3.c -std=c++17 (test for warnings, line 45) > FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 (test for excess errors) > Excess errors: > /home/jakub/src/gcc/gcc/testsuite/c-c++-common/gomp/depobj-3.c:37:38: > warning: the 'destroy' expression ''excess_precision_expr' not supported by > dump_expr' should be the same as the 'depobj' argument > 'obj' [-Wopenmp] > The following patch replaces that 'excess_precision_expr' not supported by > dump_expr > with (float)(((long double)a) + (long double)5) > Still ugly and doesn't actually fix the FAIL (will deal with that > incrementally), but at least valid C/C++ and shows the excess precision > handling in action. > > Ok for trunk if this passes bootstrap/regtest? > > 2024-03-22 Jakub Jelinek > > gcc/c/ > * c-pretty-print.cc (pp_c_cast_expression, > c_pretty_printer::expression): Handle EXCESS_PRECISION_EXPR like > NOP_EXPR. The c-pretty-print.cc changes are OK. -- Joseph S. Myers josmy...@redhat.com
Re: [PATCH] c-family, c++: Handle EXCESS_PRECISION_EXPR in pretty printers
Hi Jakub, > I've noticed that the c-c++-common/gomp/depobj-3.c test FAILs on i686-linux: > PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 17 (test for > warnings, line 15) > FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 at line 39 (test for > warnings, line 37) > PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 43 (test for errors, > line 41) > PASS: c-c++-common/gomp/depobj-3.c -std=c++17 (test for warnings, line 45) > FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 (test for excess errors) > Excess errors: > /home/jakub/src/gcc/gcc/testsuite/c-c++-common/gomp/depobj-3.c:37:38: > warning: the 'destroy' expression ''excess_precision_expr' not supported by > dump_expr' should be the same as the 'depobj' argument > 'obj' [-Wopenmp] > The following patch replaces that 'excess_precision_expr' not supported by > dump_expr > with (float)(((long double)a) + (long double)5) this is PR c++/112724. Rainer -- - Rainer Orth, Center for Biotechnology, Bielefeld University
[PATCH] c-family, c++: Handle EXCESS_PRECISION_EXPR in pretty printers
Hi! I've noticed that the c-c++-common/gomp/depobj-3.c test FAILs on i686-linux: PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 17 (test for warnings, line 15) FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 at line 39 (test for warnings, line 37) PASS: c-c++-common/gomp/depobj-3.c -std=c++17 at line 43 (test for errors, line 41) PASS: c-c++-common/gomp/depobj-3.c -std=c++17 (test for warnings, line 45) FAIL: c-c++-common/gomp/depobj-3.c -std=c++17 (test for excess errors) Excess errors: /home/jakub/src/gcc/gcc/testsuite/c-c++-common/gomp/depobj-3.c:37:38: warning: the 'destroy' expression ''excess_precision_expr' not supported by dump_expr' should be the same as the 'depobj' argument 'obj' [-Wopenmp] The following patch replaces that 'excess_precision_expr' not supported by dump_expr with (float)(((long double)a) + (long double)5) Still ugly and doesn't actually fix the FAIL (will deal with that incrementally), but at least valid C/C++ and shows the excess precision handling in action. Ok for trunk if this passes bootstrap/regtest? 2024-03-22 Jakub Jelinek gcc/c/ * c-pretty-print.cc (pp_c_cast_expression, c_pretty_printer::expression): Handle EXCESS_PRECISION_EXPR like NOP_EXPR. gcc/cp/ * error.cc (dump_expr): Handle EXCESS_PRECISION_EXPR like NOP_EXPR. --- gcc/c-family/c-pretty-print.cc.jj 2024-01-12 10:07:57.744858004 +0100 +++ gcc/c-family/c-pretty-print.cc 2024-03-22 09:58:56.640001991 +0100 @@ -2327,6 +2327,7 @@ pp_c_cast_expression (c_pretty_printer * case FIX_TRUNC_EXPR: CASE_CONVERT: case VIEW_CONVERT_EXPR: +case EXCESS_PRECISION_EXPR: if (!location_wrapper_p (e)) pp_c_type_cast (pp, TREE_TYPE (e)); pp_c_cast_expression (pp, TREE_OPERAND (e, 0)); @@ -2753,6 +2754,7 @@ c_pretty_printer::expression (tree e) case FIX_TRUNC_EXPR: CASE_CONVERT: case VIEW_CONVERT_EXPR: +case EXCESS_PRECISION_EXPR: pp_c_cast_expression (this, e); break; --- gcc/cp/error.cc.jj 2024-01-20 12:32:34.157939870 +0100 +++ gcc/cp/error.cc 2024-03-22 10:00:38.259610171 +0100 @@ -2662,6 +2662,7 @@ dump_expr (cxx_pretty_printer *pp, tree CASE_CONVERT: case IMPLICIT_CONV_EXPR: case VIEW_CONVERT_EXPR: +case EXCESS_PRECISION_EXPR: { tree op = TREE_OPERAND (t, 0); Jakub