aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-typeck.c12
2 files changed, 9 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c8f3f0a..5d65f15 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-05-06 Neil Booth <neil@daikokuya.demon.co.uk>
+
+ * c-typeck.c (internal_build_compound_expr): Check for
+ array to pointer conversion just once.
+
2001-05-05 Richard Henderson <rth@redhat.com>
* integrate.c (copy_insn_list): Substitute NOTE_EXPECTED_VALUE.
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index f05422c..33ac1169 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -3644,6 +3644,10 @@ internal_build_compound_expr (list, first_p)
if (TREE_CHAIN (list) == 0)
{
+ /* Convert arrays to pointers when there really is a comma operator. */
+ if (!first_p && TREE_CODE (TREE_TYPE (TREE_VALUE (list))) == ARRAY_TYPE)
+ TREE_VALUE (list) = default_conversion (TREE_VALUE (list));
+
#if 0 /* If something inside inhibited lvalueness, we should not override. */
/* Consider (x, y+0), which is not an lvalue since y+0 is not. */
@@ -3658,14 +3662,6 @@ internal_build_compound_expr (list, first_p)
return TREE_VALUE (list);
}
- if (TREE_CHAIN (list) != 0 && TREE_CHAIN (TREE_CHAIN (list)) == 0)
- {
- /* Convert arrays to pointers when there really is a comma operator. */
- if (TREE_CODE (TREE_TYPE (TREE_VALUE (TREE_CHAIN (list)))) == ARRAY_TYPE)
- TREE_VALUE (TREE_CHAIN (list))
- = default_conversion (TREE_VALUE (TREE_CHAIN (list)));
- }
-
rest = internal_build_compound_expr (TREE_CHAIN (list), FALSE);
if (! TREE_SIDE_EFFECTS (TREE_VALUE (list)))