| /* This test was causing an ICE in DCE because we were allowing void * |
| pointers to have a memory tag, which we were copying when doing copy |
| propagation. Since void * can never be de-referenced, its memory tag |
| was never renamed. */ |
| |
| /* { dg-do compile } */ |
| /* { dg-options "-O -ftree-dominator-opts" } */ |
| |
| typedef __SIZE_TYPE__ size_t; |
| typedef union tree_node *tree; |
| struct operands_d |
| { |
| tree *def_op; |
| }; |
| |
| void |
| gt_ggc_mx_operands_d (void *x_p) |
| { |
| struct operands_d *const x = (struct operands_d *) x_p; |
| if ((*x).def_op != ((void *) 0)) |
| { |
| size_t i0; |
| do |
| { |
| const void *const a__ = ((*x).def_op); |
| if (a__ != ((void *) 0) && a__ != (void *) 1) |
| ggc_set_mark (a__); |
| } |
| while (0); |
| for (i0 = 0; i0 < (size_t) (1); i0++) |
| { |
| do |
| { |
| if ((void *) (*x).def_op[i0] != ((void *) 0)) |
| gt_ggc_mx_lang_tree_node ((*x).def_op[i0]); |
| } |
| while (0); |
| } |
| } |
| } |