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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Gaius Mulley <ga...@gcc.gnu.org>:

https://gcc.gnu.org/g:68201409bc2867da45791331e385198826fa4576

commit r14-232-g68201409bc2867da45791331e385198826fa4576
Author: Gaius Mulley <gaiusm...@gmail.com>
Date:   Wed Apr 26 02:55:59 2023 +0100

    PR modula2/108121 Re-implement overflow detection for constant literals

    This patch fixes the overflow detection for constant literals.
    The ZTYPE is changed to int128 (or int64) if int128 is unavailable and
    constant literals are built from widest_int.  The widest_int is converted
    into the tree type and checked for overflow.
    m2expr_interpret_integer and append_m2_digit are removed.

    gcc/m2/ChangeLog:

            PR modula2/108121
            * gm2-compiler/M2ALU.mod (Less): Reformatted.
            * gm2-compiler/SymbolTable.mod (DetermineSizeOfConstant): Remove
            from import.
            (ConstantStringExceedsZType): Import.
            (GetConstLitType): Re-implement using ConstantStringExceedsZType.
            * gm2-gcc/m2decl.cc (m2decl_DetermineSizeOfConstant): Remove.
            (m2decl_ConstantStringExceedsZType): New function.
            (m2decl_BuildConstLiteralNumber): Re-implement.
            * gm2-gcc/m2decl.def (DetermineSizeOfConstant): Remove.
            (ConstantStringExceedsZType): New function.
            * gm2-gcc/m2decl.h (m2decl_DetermineSizeOfConstant): Remove.
            (m2decl_ConstantStringExceedsZType): New function.
            * gm2-gcc/m2expr.cc (append_digit): Remove.
            (m2expr_interpret_integer): Remove.
            (append_m2_digit): Remove.
            (m2expr_StrToWideInt): New function.
            (m2expr_interpret_m2_integer): Remove.
            * gm2-gcc/m2expr.def (CheckConstStrZtypeRange): New function.
            * gm2-gcc/m2expr.h (m2expr_StrToWideInt): New function.
            * gm2-gcc/m2type.cc (build_m2_word64_type_node): New function.
            (build_m2_ztype_node): New function.
            (m2type_InitBaseTypes): Call build_m2_ztype_node.
            * gm2-lang.cc (gm2_type_for_size): Re-write using early returns.

    gcc/testsuite/ChangeLog:

            PR modula2/108121
            * gm2/pim/fail/largeconst.mod: Increased constant value test
            to fail now that cc1gm2 uses widest_int to represent a ZTYPE.
            * gm2/pim/fail/largeconst2.mod: New test.

    Signed-off-by: Gaius Mulley <gaiusm...@gmail.com>

Reply via email to