From d8f6dbb9115d00af2eb319d4e65fbbc74dfc7d20 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Wed, 13 May 1992 05:02:10 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r968 --- gcc/fold-const.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 75f5c18eee1..029f25cde24 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2748,9 +2748,13 @@ fold (expr) return convert (TREE_TYPE (t), TREE_OPERAND (TREE_OPERAND (t, 0), 0)); if (TREE_CODE (TREE_OPERAND (t, 0)) == MODIFY_EXPR - && TREE_CONSTANT (TREE_OPERAND (TREE_OPERAND (t, 0), 1))) + && TREE_CONSTANT (TREE_OPERAND (TREE_OPERAND (t, 0), 1)) + /* Detect assigning a bitfield. */ + && !(TREE_CODE (TREE_OPERAND (TREE_OPERAND (t, 0), 0)) == COMPONENT_REF + && DECL_BIT_FIELD (TREE_OPERAND (TREE_OPERAND (TREE_OPERAND (t, 0), 0), 1)))) { - /* Don't leave an assignment inside a conversion. */ + /* Don't leave an assignment inside a conversion + unless assiging a bitfield. */ tree prev = TREE_OPERAND (t, 0); TREE_OPERAND (t, 0) = TREE_OPERAND (prev, 1); /* First do the assignment, then return converted constant. */ -- 2.30.2