From ddbe9812b118487d499a1a452f8f3b5cd8d79f4f Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Fri, 17 Apr 1992 13:33:15 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r761 --- gcc/stmt.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gcc/stmt.c b/gcc/stmt.c index de199028c3a..7ba23ceac20 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -1206,8 +1206,18 @@ expand_expr_stmt (exp) if (TYPE_MODE (TREE_TYPE (exp)) != BLKmode) copy_to_reg (last_expr_value); else - /* This case needs to be written. */ - abort (); + { + rtx lab = gen_label_rtx (); + + /* Compare the value with itself to reference it. */ + emit_cmp_insn (last_expr_value, last_expr_value, EQ, + expand_expr (TYPE_SIZE (last_expr_type), + 0, VOIDmode, 0), + BLKmode, 0, + TYPE_ALIGN (last_expr_type) / BITS_PER_UNIT); + emit_jump_insn ((*bcc_gen_fctn[(int) EQ]) (lab)); + emit_label (lab); + } } /* If this expression is part of a ({...}) and is in memory, we may have @@ -1291,6 +1301,11 @@ warn_if_unused_value (exp) return 0; default: + /* Referencing a volatile value is a side effect, so don't warn. */ + if ((TREE_CODE_CLASS (TREE_CODE (exp)) == 'd' + || TREE_CODE_CLASS (TREE_CODE (exp)) == 'r') + && TREE_THIS_VOLATILE (exp)) + return 0; warning_with_file_and_line (emit_filename, emit_lineno, "value computed is not used"); return 1; -- 2.30.2