aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/expr.c2
-rw-r--r--gcc/expr.c10
4 files changed, 27 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f970d7b..30dbe70 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-03-12 Andrew Lewycky <andrew@mxc.ca>
+
+ PR c++/7050
+ * expr.c (store_expr): Don't attempt to store void-typed trees,
+ just evaluate them for side effects.
+
2003-03-12 Neil Booth <neil@daikokuya.co.uk>
* cppfiles.c (cpp_rename_file, cpp_push_include): New.
@@ -9,10 +15,10 @@
2003-03-12 Nathanael Nerode <neroden@gcc.gnu.org>
- * aclocal.m4: Introduce gcc_GAS_VERSION_GTE_IFELSE,
- _gcc_COMPUTE_GAS_VERSION.
- * configure.in: Use them.
- * configure: Regenerate.
+ * aclocal.m4: Introduce gcc_GAS_VERSION_GTE_IFELSE,
+ _gcc_COMPUTE_GAS_VERSION.
+ * configure.in: Use them.
+ * configure: Regenerate.
2003-03-12 Bob Wilson <bob.wilson@acm.org>
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1e33808..71d7536 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2003-03-12 Andrew Lewycky <andrew@mxc.ca>
+
+ PR c++/7050
+ * expr.c (cxx_expand_expr): Return const0_rtx for throw
+ expressions.
+
2003-03-11 Mark Mitchell <mark@codesourcery.com>
PR c++/9474
diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c
index 7252a4d..160a946 100644
--- a/gcc/cp/expr.c
+++ b/gcc/cp/expr.c
@@ -105,7 +105,7 @@ cxx_expand_expr (tree exp, rtx target, enum machine_mode tmode, int modifier)
case THROW_EXPR:
expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode, 0);
- return NULL;
+ return const0_rtx;
case MUST_NOT_THROW_EXPR:
expand_eh_region_start ();
diff --git a/gcc/expr.c b/gcc/expr.c
index 46b264e..e540fb2 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4354,6 +4354,16 @@ store_expr (exp, target, want_value)
int dont_return_target = 0;
int dont_store_target = 0;
+ if (VOID_TYPE_P (TREE_TYPE (exp)))
+ {
+ /* C++ can generate ?: expressions with a throw expression in one
+ branch and an rvalue in the other. Here, we resolve attempts to
+ store the throw expression's nonexistant result. */
+ if (want_value)
+ abort ();
+ expand_expr (exp, const0_rtx, VOIDmode, 0);
+ return NULL_RTX;
+ }
if (TREE_CODE (exp) == COMPOUND_EXPR)
{
/* Perform first part of compound expression, then assign from second