aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGaius Mulley <gaiusmod2@gmail.com>2023-04-21 13:19:54 +0100
committerGaius Mulley <gaiusmod2@gmail.com>2023-04-21 13:19:54 +0100
commita7e1ee39e4fa37d005929c4ff9457d1a199559c6 (patch)
tree69044e6be9a89e990e4055adcc15fe8d353552b7 /gcc
parentcddfe6bc40b3dc0806e260bbfb4cac82d609a258 (diff)
downloadgcc-a7e1ee39e4fa37d005929c4ff9457d1a199559c6.zip
gcc-a7e1ee39e4fa37d005929c4ff9457d1a199559c6.tar.gz
gcc-a7e1ee39e4fa37d005929c4ff9457d1a199559c6.tar.bz2
PR modula2/109586 cc1gm2 ICE when compiling large source files.
The function m2block_RememberConstant calls m2tree_IsAConstant. However IsAConstant does not recognise TREE_CODE(t) == CONSTRUCTOR as a constant. Without this patch CONSTRUCTOR contants are garbage collected (and not preserved) resulting in a corrupt tree and crash. gcc/m2/ChangeLog: PR modula2/109586 * gm2-gcc/m2tree.cc (m2tree_IsAConstant): Add (TREE_CODE (t) == CONSTRUCTOR) to expression. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/m2/gm2-gcc/m2tree.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/m2/gm2-gcc/m2tree.cc b/gcc/m2/gm2-gcc/m2tree.cc
index 33dc57d..0fc2fe5 100644
--- a/gcc/m2/gm2-gcc/m2tree.cc
+++ b/gcc/m2/gm2-gcc/m2tree.cc
@@ -120,8 +120,8 @@ bool
m2tree_IsAConstant (tree t)
{
return (TREE_CODE (t) == INTEGER_CST) || (TREE_CODE (t) == REAL_CST)
- || (TREE_CODE (t) == REAL_CST) || (TREE_CODE (t) == COMPLEX_CST)
- || (TREE_CODE (t) == STRING_CST);
+ || (TREE_CODE (t) == REAL_CST) || (TREE_CODE (t) == COMPLEX_CST)
+ || (TREE_CODE (t) == STRING_CST) || (TREE_CODE (t) == CONSTRUCTOR);
}