Commit 5f6705b7 by Jakub Jelinek

re PR inline-asm/92352 (ICE in force_constant_size)

	PR inline-asm/92352
	* gimplify.c (gimplify_asm_expr): Reject VLA in output or input
	operands with non-memory constraints.

	* c-c++-common/pr92352.c: New test.

From-SVN: r277873
parent 8adf3cc4
2019-11-06 Jakub Jelinek <jakub@redhat.com>
PR inline-asm/92352
* gimplify.c (gimplify_asm_expr): Reject VLA in output or input
operands with non-memory constraints.
2019-11-05 Martin Sebor <msebor@redhat.com> 2019-11-05 Martin Sebor <msebor@redhat.com>
PR tree-optimization/92373 PR tree-optimization/92373
...@@ -530,10 +536,7 @@ ...@@ -530,10 +536,7 @@
PR middle-end/91647 PR middle-end/91647
PR middle-end/91463 PR middle-end/91463
PR middle-end/92312 PR middle-end/92312
* c-family/c-pretty-print.c (direct_abstract_declarator): Print * doc/invoke.texi (-Wzero-length-bounds): Document.
bound in zero-length arrays.
* gcc/c-family/c.opt (-Wzero-length-bounds): New option.
* gcc/doc/invoke.texi (-Wzero-length-bounds): Document.
* gimple-match-head.c (try_conditional_simplification): Use memcpy * gimple-match-head.c (try_conditional_simplification): Use memcpy
instead of a hand-rolled loop to avoid PR 92323. instead of a hand-rolled loop to avoid PR 92323.
* tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays * tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays
...@@ -962,7 +965,7 @@ ...@@ -962,7 +965,7 @@
* tree-ssa-loop-niter.h (simplify_replace_tree): Change declaration. * tree-ssa-loop-niter.h (simplify_replace_tree): Change declaration.
* tree-ssa-loop-niter.c (simplify_replace_tree): Add context parameter * tree-ssa-loop-niter.c (simplify_replace_tree): Add context parameter
and make the valueize function pointer also take a void pointer. and make the valueize function pointer also take a void pointer.
* gcc/tree-ssa-sccvn.c (vn_valueize_wrapper): New function to wrap * tree-ssa-sccvn.c (vn_valueize_wrapper): New function to wrap
around vn_valueize, to call it without a context. around vn_valueize, to call it without a context.
(process_bb): Use vn_valueize_wrapper instead of vn_valueize. (process_bb): Use vn_valueize_wrapper instead of vn_valueize.
* tree-vect-loop.c (_loop_vec_info): Initialize epilogue_vinfos. * tree-vect-loop.c (_loop_vec_info): Initialize epilogue_vinfos.
...@@ -3607,7 +3610,7 @@ ...@@ -3607,7 +3610,7 @@
2019-10-12 John David Anglin <danglin@gcc.gnu.org> 2019-10-12 John David Anglin <danglin@gcc.gnu.org>
* gcc/config/pa/pa.c (pa_option_override): Remove trailing comma * config/pa/pa.c (pa_option_override): Remove trailing comma
from warning. from warning.
2019-10-12 Jakub Jelinek <jakub@redhat.com> 2019-10-12 Jakub Jelinek <jakub@redhat.com>
...@@ -4009,7 +4012,7 @@ ...@@ -4009,7 +4012,7 @@
2019-10-08 Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com> 2019-10-08 Dmitrij Pochepko <dmitrij.pochepko@bell-sw.com>
PR tree-optimization/90836 PR tree-optimization/90836
* gcc/match.pd (popcount): New pattern. * match.pd (popcount): New pattern.
2019-10-08 Martin Sebor <msebor@redhat.com> 2019-10-08 Martin Sebor <msebor@redhat.com>
...@@ -6878,7 +6881,7 @@ ...@@ -6878,7 +6881,7 @@
2019-09-21 Martin Sebor <msebor@redhat.com> 2019-09-21 Martin Sebor <msebor@redhat.com>
PR middle-end/91830 PR middle-end/91830
* gcc/gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset): * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
Simplify computation of the offset of the referenced subobject. Simplify computation of the offset of the referenced subobject.
2019-09-21 Iain Sandoe <iain@sandoe.co.uk> 2019-09-21 Iain Sandoe <iain@sandoe.co.uk>
...@@ -9388,15 +9391,15 @@ ...@@ -9388,15 +9391,15 @@
2019-08-23 Wilco Dijkstra <wdijkstr@arm.com> 2019-08-23 Wilco Dijkstra <wdijkstr@arm.com>
* gcc/doc/invoke.texi (mneon-for-64bits): Deprecate option. * doc/invoke.texi (mneon-for-64bits): Deprecate option.
* gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate option. * config/arm/arm.opt (mneon-for-64bits): Deprecate option.
* gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove. * config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
(prefer_neon_for_64bits): Remove. (prefer_neon_for_64bits): Remove.
* gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove. * config/arm/arm.c (prefer_neon_for_64bits): Remove.
(tune_params): Remove PREF_NEON_64_FALSE uses. (tune_params): Remove PREF_NEON_64_FALSE uses.
(arm_option_override): Remove prefer_neon selection code. (arm_option_override): Remove prefer_neon selection code.
(arm_print_tune_info): Remove prefer_neon_for_64bits. (arm_print_tune_info): Remove prefer_neon_for_64bits.
* gcc/config/arm/arm-protos.h (tune_params): Remove * config/arm/arm-protos.h (tune_params): Remove
prefer_neon_for_64bits. prefer_neon_for_64bits.
(prefer_neon_for_64bits): Remove. (prefer_neon_for_64bits): Remove.
...@@ -11607,7 +11610,7 @@ ...@@ -11607,7 +11610,7 @@
2019-08-13 Wilco Dijkstra <wdijkstr@arm.com> 2019-08-13 Wilco Dijkstra <wdijkstr@arm.com>
PR target/81800 PR target/81800
* gcc/config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF * config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF
operand is larger than a long int. operand is larger than a long int.
2019-08-13 Richard Sandiford <richard.sandiford@arm.com> 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
...@@ -21,6 +21,16 @@ ...@@ -21,6 +21,16 @@
* c-common.h (enum rid): Add RID_CONSTEVAL. * c-common.h (enum rid): Add RID_CONSTEVAL.
* c-common.c (c_common_reswords): Add consteval. * c-common.c (c_common_reswords): Add consteval.
2019-11-01 Martin Sebor <msebor@redhat.com>
PR middle-end/91679
PR middle-end/91647
PR middle-end/91463
PR middle-end/92312
* c-pretty-print.c (direct_abstract_declarator): Print
bound in zero-length arrays.
* c.opt (-Wzero-length-bounds): New option.
2019-10-30 Nathan Sidwell <nathan@acm.org> 2019-10-30 Nathan Sidwell <nathan@acm.org>
* c-cppbuiltin.c (c_cpp_builtins): Add 'L' suffix to feature * c-cppbuiltin.c (c_cpp_builtins): Add 'L' suffix to feature
......
...@@ -6235,8 +6235,13 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) ...@@ -6235,8 +6235,13 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
is_inout = false; is_inout = false;
} }
/* If we can't make copies, we can only accept memory. */ /* If we can't make copies, we can only accept memory.
if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (link)))) Similarly for VLAs. */
tree outtype = TREE_TYPE (TREE_VALUE (link));
if (outtype != error_mark_node
&& (TREE_ADDRESSABLE (outtype)
|| !COMPLETE_TYPE_P (outtype)
|| !tree_fits_poly_uint64_p (TYPE_SIZE_UNIT (outtype))))
{ {
if (allows_mem) if (allows_mem)
allows_reg = 0; allows_reg = 0;
...@@ -6392,7 +6397,11 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) ...@@ -6392,7 +6397,11 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
oconstraints, &allows_mem, &allows_reg); oconstraints, &allows_mem, &allows_reg);
/* If we can't make copies, we can only accept memory. */ /* If we can't make copies, we can only accept memory. */
if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (link)))) tree intype = TREE_TYPE (TREE_VALUE (link));
if (intype != error_mark_node
&& (TREE_ADDRESSABLE (intype)
|| !COMPLETE_TYPE_P (intype)
|| !tree_fits_poly_uint64_p (TYPE_SIZE_UNIT (intype))))
{ {
if (allows_mem) if (allows_mem)
allows_reg = 0; allows_reg = 0;
......
2019-11-06 Jakub Jelinek <jakub@redhat.com>
PR inline-asm/92352
* c-c++-common/pr92352.c: New test.
2019-11-06 Xiong Hu Luo <luoxhu@linux.ibm.com> 2019-11-06 Xiong Hu Luo <luoxhu@linux.ibm.com>
PR92090 PR92090
......
/* PR inline-asm/92352 */
void
foo (int x)
{
int var[x];
asm volatile ("" : "+r" (var)); /* { dg-error "impossible constraint in 'asm'" } */
} /* { dg-error "non-memory output 0 must stay in memory" "" { target *-*-* } .-1 } */
void
bar (int x)
{
int var[x];
asm volatile ("" : "+m" (var));
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment