From e7b454ed4300c286ef1c10209caf47792330c374 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Fri, 30 May 2008 07:35:17 +0000 Subject: [PATCH] * fold-const.c (fold_unary) : Add ??? comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136200 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/fold-const.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aeff771692b..82d24789424 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2008-05-30 Eric Botcazou + + * fold-const.c (fold_unary) : Add ??? comment. + 2008-05-30 Danny Smith * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 25756bbb9c9..4a9d55ff238 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -7866,7 +7866,10 @@ fold_unary (enum tree_code code, tree type, tree op0) /* Convert (T)(x & c) into (T)x & (T)c, if c is an integer constants (if x has signed type, the sign bit cannot be set - in c). This folds extension into the BIT_AND_EXPR. */ + in c). This folds extension into the BIT_AND_EXPR. + ??? We don't do it for BOOLEAN_TYPE or ENUMERAL_TYPE because they + very likely don't have maximal range for their precision and this + transformation effectively doesn't preserve non-maximal ranges. */ if (TREE_CODE (type) == INTEGER_TYPE && TREE_CODE (op0) == BIT_AND_EXPR && TREE_CODE (TREE_OPERAND (op0, 1)) == INTEGER_CST) -- 2.11.0