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

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

https://gcc.gnu.org/g:50fc6ce0cb8edf927ae6117a5484e4d8d52e393e

commit r13-7619-g50fc6ce0cb8edf927ae6117a5484e4d8d52e393e
Author: Gaius Mulley <gaiusm...@gmail.com>
Date:   Fri Jul 28 03:10:01 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.

    (cherry picked from commit 68201409bc2867da45791331e385198826fa4576)

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

Reply via email to