Bug 85826 - [9 Regression] ICE in gimple-ssa-warn-restrict on a variable-length struct starting with r260280
Summary: [9 Regression] ICE in gimple-ssa-warn-restrict on a variable-length struct st...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 9.0
: P1 normal
Target Milestone: 9.0
Assignee: Martin Sebor
URL:
Keywords: ice-on-valid-code, patch
Depends on:
Blocks:
 
Reported: 2018-05-18 08:09 UTC by Martin Liška
Modified: 2018-05-22 15:23 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work: 8.1.0
Known to fail: 9.0
Last reconfirmed: 2018-05-18 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Liška 2018-05-18 08:09:39 UTC
Following ICEs:

$ gcc /home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr66817.c -Warray-bounds -O3
during GIMPLE pass: wrestrict
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr66817.c: In function ‘retframe_block’:
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/i386/pr66817.c:16:3: internal compiler error: tree check: expected integer_cst, have var_decl in get_len, at tree.h:5571
   retframe_block ()
   ^~~~~~~~~~~~~~
0x5d5f98 tree_check_failed(tree_node const*, char const*, int, char const*, ...)
	../../gcc/tree.c:9337
0x95e3fb tree_check(tree_node const*, char const*, int, char const*, tree_code)
	../../gcc/tree.h:3391
0x95e3fb wi::extended_tree<128>::get_len() const
	../../gcc/tree.h:5571
0x95e3fb wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<128> > const&)
	../../gcc/wide-int.h:934
0x95e3fb wide_int_ref_storage<true, false>::wide_int_ref_storage<generic_wide_int<wi::extended_tree<128> > >(generic_wide_int<wi::extended_tree<128> > const&, unsigned int)
	../../gcc/wide-int.h:983
0x95e3fb generic_wide_int<wide_int_ref_storage<true, false> >::generic_wide_int<generic_wide_int<wi::extended_tree<128> > >(generic_wide_int<wi::extended_tree<128> > const&, unsigned int)
	../../gcc/wide-int.h:758
0x95e3fb fixed_wide_int_storage<128>::fixed_wide_int_storage<generic_wide_int<wi::extended_tree<128> > >(generic_wide_int<wi::extended_tree<128> > const&)
	../../gcc/wide-int.h:1211
0x95e3fb generic_wide_int<fixed_wide_int_storage<128> >& generic_wide_int<fixed_wide_int_storage<128> >::operator=<generic_wide_int<wi::extended_tree<128> > >(generic_wide_int<wi::extended_tree<128> > const&)
	../../gcc/wide-int.h:886
0x95e3fb builtin_memref
	../../gcc/gimple-ssa-warn-restrict.c:281
0x95fac2 check_bounds_or_overlap(gcall*, tree_node*, tree_node*, tree_node*, tree_node*, bool)
	../../gcc/gimple-ssa-warn-restrict.c:1855
0x96270b check_call
	../../gcc/gimple-ssa-warn-restrict.c:1826
0x96270b before_dom_children
	../../gcc/gimple-ssa-warn-restrict.c:106
0x146bd9f dom_walker::walk(basic_block_def*)
	../../gcc/domwalk.c:353
0x957071 execute
	../../gcc/gimple-ssa-warn-restrict.c:120
Comment 1 Martin Sebor 2018-05-18 18:16:53 UTC
Patch: https://gcc.gnu.org/ml/gcc-patches/2018-05/msg00939.html
Comment 2 Martin Sebor 2018-05-22 15:22:50 UTC
Author: msebor
Date: Tue May 22 15:22:16 2018
New Revision: 260537

URL: https://gcc.gnu.org/viewcvs?rev=260537&root=gcc&view=rev
Log:
PR tree-optimization/85826 - ICE in gimple-ssa-warn-restruct on
   a variable-length struct

gcc/ChangeLog:

	PR tree-optimization/85826
	* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
	assuming that a DECL necesarily has a constant size.

gcc/testsuite/ChangeLog:

	PR tree-optimization/85826
	* gcc.dg/Wrestrict-17.c: New test.


Added:
    trunk/gcc/testsuite/gcc.dg/Wrestrict-17.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimple-ssa-warn-restrict.c
    trunk/gcc/testsuite/ChangeLog
Comment 3 Martin Sebor 2018-05-22 15:23:13 UTC
Fixed via r260537.
Comment 4 Martin Sebor 2018-05-22 15:23:43 UTC
Fixed.