From ad2e7dd004513e4877bf837f4113815ada04c7f0 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 26 Jul 1994 19:45:11 -0400 Subject: [PATCH] (expand_expr, case ARRAY_REF): Don't fold L"foo"[2]. From-SVN: r7797 --- gcc/expr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/expr.c b/gcc/expr.c index e7649868eda..62eb5b830fb 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -4340,13 +4340,16 @@ expand_expr (exp, target, tmode, modifier) } /* Fold an expression like: "foo"[2]. - This is not done in fold so it won't happen inside &. */ + This is not done in fold so it won't happen inside &. + Don't fold if this is for wide characters since it's too + difficult to do correctly and this is a very rare case. */ if (TREE_CODE (array) == STRING_CST && TREE_CODE (index) == INTEGER_CST && !TREE_INT_CST_HIGH (index) && (i = TREE_INT_CST_LOW (index)) < TREE_STRING_LENGTH (array) - && GET_MODE_CLASS (mode) == MODE_INT) + && GET_MODE_CLASS (mode) == MODE_INT + && GET_MODE_SIZE (mode) == 1) return GEN_INT (TREE_STRING_POINTER (array)[i]); /* If this is a constant index into a constant array, -- 2.30.2