[Bug middle-end/79990] [CHKP] ICE in expand_expr_addr_expr_1, at expr.c:7790

2017-06-08 Thread aivchenk at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79990

Alexander Ivchenko  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||aivchenk at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #3 from Alexander Ivchenko  ---
Fixed with r249015:


Author: aivchenk 
Date:   Thu Jun 8 14:07:21 2017 +

gcc/ChangeLog:

2017-05-09  Alexander Ivchenko  

* tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
New function.
(chkp_get_hard_register_fake_addr_expr): Ditto.
(chkp_build_addr_expr): Add check for hard reg case.
(chkp_parse_array_and_component_ref): Ditto.
(chkp_find_bounds_1): Ditto.
(chkp_process_stmt): Don't generate bounds store for
hard reg case.

[Bug middle-end/79990] [CHKP] ICE in expand_expr_addr_expr_1, at expr.c:7790

2017-03-23 Thread aivchenk at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79990

--- Comment #2 from Alexander Ivchenko  ---
I proposed a fix for this:
https://gcc.gnu.org/ml/gcc-patches/2017-03/msg01222.html

[Bug middle-end/79990] [CHKP] ICE in expand_expr_addr_expr_1, at expr.c:7790

2017-03-21 Thread aivchenk at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79990

--- Comment #1 from Alexander Ivchenko  ---
The problem here is that chkp creates bounds for register variable:

vsdump.c.025t.chkp:
Building bounds for address of decl u   
Made bounds: __bound_tmp.0_4 = __builtin_ia32_bndmk (, 16);

And when we expanding  we face 

expand_expr_addr_expr_1:
/* If the DECL isn't in memory, then the DECL wasn't properly
   marked TREE_ADDRESSABLE, which will be either a front-end 
   or a tree optimizer bug.  */  
gcc_assert (MEM_P (result));

where "result" is: (reg/v:V4SI 21 xmm0 [ u ])

We need to disable the instrumentation of register variables and the
subscriptions of those variables.
I couldn't find the correct place for that disabling so far though.