diff options
author | Richard Stallman <rms@gnu.org> | 1993-03-04 19:36:42 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-03-04 19:36:42 +0000 |
commit | 766f6c304d4173d2b279d29dd096e8aec4fbacc8 (patch) | |
tree | 43366ca8ed642d0d7298b15c40661970ed582514 /gcc | |
parent | 1cc1b11a2edb824cebfcee7eddad213be0454a9f (diff) | |
download | gcc-766f6c304d4173d2b279d29dd096e8aec4fbacc8.zip gcc-766f6c304d4173d2b279d29dd096e8aec4fbacc8.tar.gz gcc-766f6c304d4173d2b279d29dd096e8aec4fbacc8.tar.bz2 |
(truthvalue_conversion): Handle COMPLEX_EXPR.
From-SVN: r3638
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-common.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index 85ef048..8dfc1e7 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -373,7 +373,13 @@ convert_and_check (type, expr) tree t = convert (type, expr); if (TREE_CODE (t) == INTEGER_CST) { - if (TREE_CONSTANT_OVERFLOW (t)) + if (TREE_UNSIGNED (TREE_TYPE (expr)) + && !TREE_UNSIGNED (type) + && TREE_CODE (TREE_TYPE (expr)) == INTEGER_TYPE + && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (expr))) + /* No warning for converting 0x80000000 to int. */ + TREE_CONSTANT_OVERFLOW (t) = 0; + else if (TREE_CONSTANT_OVERFLOW (t)) { pedwarn ("overflow in implicit constant conversion"); TREE_CONSTANT_OVERFLOW (t) = 0; @@ -829,7 +835,8 @@ shorten_compare (op0_ptr, op1_ptr, restype_ptr, rescode_ptr) TYPE is already properly set. */ } else if (real1 && real2 - && TYPE_PRECISION (TREE_TYPE (primop0)) == TYPE_PRECISION (TREE_TYPE (primop1))) + && (TYPE_PRECISION (TREE_TYPE (primop0)) + == TYPE_PRECISION (TREE_TYPE (primop1)))) type = TREE_TYPE (primop0); /* If args' natural types are both narrower than nominal type @@ -959,6 +966,12 @@ truthvalue_conversion (expr) else return integer_one_node; + case COMPLEX_EXPR: + return build_binary_op (TRUTH_ANDIF_EXPR, + truthvalue_conversion (TREE_REALPART (expr)), + truthvalue_conversion (TREE_IMAGPART (expr)), + 0); + case NEGATE_EXPR: case ABS_EXPR: case FLOAT_EXPR: |