cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs void.
authorMark Mitchell <mark@codesourcery.com>
Wed, 24 Apr 2002 22:46:40 +0000 (22:46 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 24 Apr 2002 22:46:40 +0000 (22:46 +0000)
* cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs
void.

From-SVN: r52742

gcc/cp/ChangeLog
gcc/cp/cvt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/stmtexpr2.C [new file with mode: 0644]

index 39b60eb80e4fec2c0ad8e6753a78116cb4afa524..e4ca0591d510994a9e43345759401b440882c9a6 100644 (file)
@@ -1,3 +1,9 @@
+2002-04-24  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/6438.
+       * cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs
+       void.
+
 2002-04-24  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * cp-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
index d0f9945fdaf36c4f787c90645d1927d226c50407..b5306c1738fa7b18b36ac97d7ec77f93295ef2da 100644 (file)
@@ -836,7 +836,7 @@ convert_to_void (expr, implicit)
         tree new_op1 = convert_to_void (op1, implicit);
         tree new_op2 = convert_to_void (op2, implicit);
         
-       expr = build (COND_EXPR, void_type_node,
+       expr = build (COND_EXPR, TREE_TYPE (new_op1),
                      TREE_OPERAND (expr, 0), new_op1, new_op2);
         break;
       }
index 9589e8a28c1f33a77f5c9d6d26a5aa5563dc1174..a99b23294a3f5b852c4e9f696fe51e61caab6898 100644 (file)
@@ -1,3 +1,8 @@
+2002-04-24  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/6438.
+       * g++.dg/parse/stmtexpr2.C: New test.
+
 Wed Apr 24 21:38:36 2002  J"orn Rennecke <joern.rennecke@superh.com>
 
        * gcc.dg/20020312-2.c: Add SH target.
diff --git a/gcc/testsuite/g++.dg/parse/stmtexpr2.C b/gcc/testsuite/g++.dg/parse/stmtexpr2.C
new file mode 100644 (file)
index 0000000..44f7f85
--- /dev/null
@@ -0,0 +1,11 @@
+// { dg-do compile }
+// { dg-options "" }
+
+#define DMAX(a,b) ({double _a = (a), _b = (b); _a > _b ? _a : _b; })
+
+void foo(void)
+{
+  double xl, dy;
+  xl = DMAX(dy, 0.0);
+}
+