From f9c59f7e9511856bd6dc13d2d4904ebd9249c095 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 19 Nov 2017 18:17:01 +0100 Subject: re PR c/66618 (Failure to diagnose non-constant initializer for static object with -O1) PR c/66618 PR c/69960 c-family/ * c-common.h (c_fully_fold): Add LVAL argument defaulted to false. c/ * c-parser.c (c_parser_omp_atomic): Pass true as LVAL to c_fully_fold where needed. * c-typeck.c (build_unary_op, build_modify_expr, build_asm_expr, handle_omp_array_sections): Likewise. (digest_init): Don't call decl_constant_value_for_optimization. * c-tree.h (decl_constant_value_for_optimization): Removed. * c-fold.c (c_fold_array_ref): New function. (c_fully_fold_internal): Add LVAL argument, propagate it through recursive calls. For VAR_P call decl_constant_value and unshare if not LVAL and either optimizing or IN_INIT. Remove decl_constant_value_for_optimization calls. If IN_INIT and not LVAL, fold ARRAY_REF with STRING_CST and INTEGER_CST operands. (c_fully_fold): Add LVAL argument, pass it through to c_fully_fold_internal. (decl_constant_value_for_optimization): Removed. cp/ * cp-gimplify.c (c_fully_fold): Add LVAL argument, call cp_fold_maybe_rvalue instead of cp_fold_rvalue and pass it !LVAL. testsuite/ * gcc.dg/pr69960.c: New test. * gcc.dg/pr66618.c: New test. * gcc.dg/pr66618-2.c: New test. From-SVN: r254930 --- gcc/c/c-tree.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'gcc/c/c-tree.h') diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h index 1135647..5fb57f2 100644 --- a/gcc/c/c-tree.h +++ b/gcc/c/c-tree.h @@ -770,8 +770,6 @@ set_c_expr_source_range (c_expr *expr, source_range src_range); /* In c-fold.c */ -extern tree decl_constant_value_for_optimization (tree); - extern vec incomplete_record_decls; #if CHECKING_P -- cgit v1.1