From 8bc6369b8b7ea630e70be3c6d1524090bbe2453f Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Tue, 30 Dec 2003 17:21:54 +0000 Subject: [PATCH] fold-const.c (fold): Don't require strict type equality... * fold-const.c (fold) : Don't require strict type equality, instead just prevent replacing a COND_EXPR of non-void type by one of its operands of void type. From-SVN: r75239 --- gcc/ChangeLog | 6 ++++++ gcc/fold-const.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a1010196710..20ca93eba17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-12-30 Roger Sayle + + * fold-const.c (fold) : Don't require strict type + equality, instead just prevent replacing a COND_EXPR of non-void + type by one of its operands of void type. + 2003-12-30 Andreas Schwab * doc/c-tree.texi: Fix @item vs. @itemx. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 556593243ac..7a939c49666 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -7869,7 +7869,8 @@ fold (tree expr) /* Only optimize constant conditions when the selected branch has the same type as the COND_EXPR. This avoids optimizing away "c ? x : throw", where the throw has a void type. */ - if (TREE_TYPE (tem) == TREE_TYPE (t)) + if (! VOID_TYPE_P (TREE_TYPE (tem)) + || VOID_TYPE_P (TREE_TYPE (t))) return pedantic_non_lvalue (tem); return t; } -- 2.30.2