[Bug middle-end/79990] [CHKP] ICE in expand_expr_addr_expr_1, at expr.c:7790
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: aivchenkDate: 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
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
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.