From 30d68b865b6705ced98cc185941647335c633cf5 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 25 Jun 1998 17:28:11 +0000 Subject: [PATCH] fold-const.c (make_range): Don't go looking at TREE_OPERANDs of nodes that are not expressions. * fold-const.c (make_range): Don't go looking at TREE_OPERANDs of nodes that are not expressions. From-SVN: r20728 --- gcc/ChangeLog | 5 +++++ gcc/fold-const.c | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b9ada6d0851..9ecab59ee74 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 25 12:47:41 1998 Mark Mitchell + + * fold-const.c (make_range): Don't go looking at TREE_OPERANDs of + nodes that are not expressions. + Thu Jun 25 15:08:16 1998 Mark Mitchell * invoke.texi (-fstrict-aliasing): Document. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 30499a178de..7544f8b673a 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2836,10 +2836,20 @@ make_range (exp, pin_p, plow, phigh) while (1) { code = TREE_CODE (exp); - arg0 = TREE_OPERAND (exp, 0), arg1 = TREE_OPERAND (exp, 1); - if (TREE_CODE_CLASS (code) == '<' || TREE_CODE_CLASS (code) == '1' - || TREE_CODE_CLASS (code) == '2') - type = TREE_TYPE (arg0); + + if (IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (code))) + { + arg0 = TREE_OPERAND (exp, 0); + if (TREE_CODE_CLASS (code) == '<' + || TREE_CODE_CLASS (code) == '1' + || TREE_CODE_CLASS (code) == '2') + type = TREE_TYPE (arg0); + if (TREE_CODE_CLASS (code) == '2' + || TREE_CODE_CLASS (code) == '<' + || (TREE_CODE_CLASS (code) == 'e' + && tree_code_length[(int) code] > 1)) + arg1 = TREE_OPERAND (exp, 1); + } switch (code) { -- 2.30.2