From: Andrew Pinski Date: Fri, 16 Jul 2021 01:07:09 +0000 (-0700) Subject: Fix PR 101453: ICE with optimize and large integer constant X-Git-Tag: basepoints/gcc-13~5940 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e06b1c5ac00b1bd0339739d3d9377c90852a83c9;p=thirdparty%2Fgcc.git Fix PR 101453: ICE with optimize and large integer constant The problem is the buffer is too small to hold "-O" and the interger. This fixes the problem by use the correct size instead. Changes since v1: * v2: Use HOST_BITS_PER_LONG and just divide by 3 instead of 3.32. OK? Bootstrapped and tested on x86_64-linux with no regressions. gcc/c-family/ChangeLog: PR c/101453 * c-common.c (parse_optimize_options): Use the correct size for buffer. --- diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 681fcc972f4d..fe3657b9e740 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -5798,7 +5798,7 @@ parse_optimize_options (tree args, bool attr_p) if (TREE_CODE (value) == INTEGER_CST) { - char buffer[20]; + char buffer[HOST_BITS_PER_LONG / 3 + 4]; sprintf (buffer, "-O%ld", (long) TREE_INT_CST_LOW (value)); vec_safe_push (optimize_args, ggc_strdup (buffer)); }