https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103114

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:0318df0ae63e47f6b2f30e96205d00dcb3696538

commit r12-5054-g0318df0ae63e47f6b2f30e96205d00dcb3696538
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Tue Nov 9 15:29:36 2021 +0100

    c++: Fix ICE on complex constant with -frounding-math [PR103114]

    The FE uses build_complex which assumes that fold_convert will fold
    value to a constant.  With -frounding-math that isn't guaranteed though.
    So, the patch instead fold_build2s COMPLEX_EXPR, which will result
    in build_complex if both arguments are constants, and otherwise
    will build COMPLEX_EXPR.
    build_zero_cst is an optimization for fold_convert (type,
integer_zero_node).

    2021-11-09  Jakub Jelinek  <ja...@redhat.com>

            PR c++/103114
            * parser.c (cp_parser_userdef_numeric_literal): Use fold_build2
            with COMPLEX_EXPR arg instead of build_complex, use build_zero_cst
            instead of fold_convert from integer_zero_node.

            * g++.dg/ext/complex10.C: New test.

Reply via email to