1 /* Data flow functions for trees.
2 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
3 Free Software Foundation, Inc.
4 Contributed by Diego Novillo <dnovillo@redhat.com>
6 This file is part of GCC.
8 GCC is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
13 GCC is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with GCC; see the file COPYING3. If not see
20 <http://www.gnu.org/licenses/>. */
24 #include "coretypes.h"
27 #include "pointer-set.h"
31 #include "hard-reg-set.h"
32 #include "basic-block.h"
37 #include "langhooks.h"
40 #include "diagnostic.h"
41 #include "tree-dump.h"
43 #include "tree-flow.h"
44 #include "tree-inline.h"
45 #include "tree-pass.h"
50 /* Build and maintain data flow information for trees. */
52 /* Counters used to display DFA and SSA statistics. */
60 size_t max_num_phi_args;
66 /* Local functions. */
67 static void collect_dfa_stats (struct dfa_stats_d *);
68 static tree find_vars_r (tree *, int *, void *);
71 /*---------------------------------------------------------------------------
72 Dataflow analysis (DFA) routines
73 ---------------------------------------------------------------------------*/
74 /* Find all the variables referenced in the function. This function
75 builds the global arrays REFERENCED_VARS and CALL_CLOBBERED_VARS.
77 Note that this function does not look for statement operands, it simply
78 determines what variables are referenced in the program and detects
79 various attributes for each variable used by alias analysis and the
83 find_referenced_vars (void)
86 gimple_stmt_iterator si;
90 for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
93 gimple stmt = gsi_stmt (si);
94 for (i = 0; i < gimple_num_ops (stmt); i++)
95 walk_tree (gimple_op_ptr (stmt, i), find_vars_r, NULL, NULL);
98 for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
100 gimple phi = gsi_stmt (si);
101 size_t i, len = gimple_phi_num_args (phi);
103 walk_tree (gimple_phi_result_ptr (phi), find_vars_r, NULL, NULL);
105 for (i = 0; i < len; i++)
107 tree arg = gimple_phi_arg_def (phi, i);
108 walk_tree (&arg, find_vars_r, NULL, NULL);
116 struct gimple_opt_pass pass_referenced_vars =
122 find_referenced_vars, /* execute */
125 0, /* static_pass_number */
126 TV_FIND_REFERENCED_VARS, /* tv_id */
127 PROP_gimple_leh | PROP_cfg, /* properties_required */
128 PROP_referenced_vars, /* properties_provided */
129 0, /* properties_destroyed */
130 TODO_dump_func, /* todo_flags_start */
131 TODO_dump_func /* todo_flags_finish */
136 /*---------------------------------------------------------------------------
138 ---------------------------------------------------------------------------*/
139 /* Create a new annotation for a _DECL node T. */
142 create_var_ann (tree t)
147 gcc_assert (DECL_P (t));
148 gcc_assert (!t->base.ann || t->base.ann->common.type == VAR_ANN);
150 ann = GGC_CNEW (struct var_ann_d);
151 ann->common.type = VAR_ANN;
152 t->base.ann = (tree_ann_t) ann;
157 /* Create a new annotation for a FUNCTION_DECL node T. */
160 create_function_ann (tree t)
165 gcc_assert (TREE_CODE (t) == FUNCTION_DECL);
166 gcc_assert (!t->base.ann || t->base.ann->common.type == FUNCTION_ANN);
168 ann = (function_ann_t) ggc_alloc (sizeof (*ann));
169 memset ((void *) ann, 0, sizeof (*ann));
171 ann->common.type = FUNCTION_ANN;
173 t->base.ann = (tree_ann_t) ann;
178 /* Renumber all of the gimple stmt uids. */
181 renumber_gimple_stmt_uids (void)
185 set_gimple_stmt_max_uid (cfun, 0);
188 gimple_stmt_iterator bsi;
189 for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
191 gimple stmt = gsi_stmt (bsi);
192 gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun));
197 /* Create a new annotation for a tree T. */
200 create_tree_common_ann (tree t)
202 tree_ann_common_t ann;
205 gcc_assert (!t->base.ann || t->base.ann->common.type == TREE_ANN_COMMON);
207 ann = GGC_CNEW (struct tree_ann_common_d);
209 ann->type = TREE_ANN_COMMON;
211 t->base.ann = (tree_ann_t) ann;
216 /* Build a temporary. Make sure and register it to be renamed. */
219 make_rename_temp (tree type, const char *prefix)
221 tree t = create_tmp_var (type, prefix);
223 if (TREE_CODE (TREE_TYPE (t)) == COMPLEX_TYPE
224 || TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE)
225 DECL_GIMPLE_REG_P (t) = 1;
227 if (gimple_referenced_vars (cfun))
229 add_referenced_var (t);
230 mark_sym_for_renaming (t);
238 /*---------------------------------------------------------------------------
240 ---------------------------------------------------------------------------*/
241 /* Dump the list of all the referenced variables in the current function to
245 dump_referenced_vars (FILE *file)
248 referenced_var_iterator rvi;
250 fprintf (file, "\nReferenced variables in %s: %u\n\n",
251 get_name (current_function_decl), (unsigned) num_referenced_vars);
253 FOR_EACH_REFERENCED_VAR (var, rvi)
255 fprintf (file, "Variable: ");
256 dump_variable (file, var);
259 fprintf (file, "\n");
263 /* Dump the list of all the referenced variables to stderr. */
266 debug_referenced_vars (void)
268 dump_referenced_vars (stderr);
272 /* Dump variable VAR and its may-aliases to FILE. */
275 dump_variable (FILE *file, tree var)
279 if (TREE_CODE (var) == SSA_NAME)
281 if (POINTER_TYPE_P (TREE_TYPE (var)))
282 dump_points_to_info_for (file, var);
283 var = SSA_NAME_VAR (var);
286 if (var == NULL_TREE)
288 fprintf (file, "<nil>");
292 print_generic_expr (file, var, dump_flags);
296 fprintf (file, ", UID D.%u", (unsigned) DECL_UID (var));
298 fprintf (file, ", ");
299 print_generic_expr (file, TREE_TYPE (var), dump_flags);
301 if (TREE_ADDRESSABLE (var))
302 fprintf (file, ", is addressable");
304 if (is_global_var (var))
305 fprintf (file, ", is global");
307 if (TREE_THIS_VOLATILE (var))
308 fprintf (file, ", is volatile");
310 if (is_call_clobbered (var))
311 fprintf (file, ", call clobbered");
312 else if (is_call_used (var))
313 fprintf (file, ", call used");
315 if (ann->noalias_state == NO_ALIAS)
316 fprintf (file, ", NO_ALIAS (does not alias other NO_ALIAS symbols)");
317 else if (ann->noalias_state == NO_ALIAS_GLOBAL)
318 fprintf (file, ", NO_ALIAS_GLOBAL (does not alias other NO_ALIAS symbols"
319 " and global vars)");
320 else if (ann->noalias_state == NO_ALIAS_ANYTHING)
321 fprintf (file, ", NO_ALIAS_ANYTHING (does not alias any other symbols)");
323 if (gimple_default_def (cfun, var))
325 fprintf (file, ", default def: ");
326 print_generic_expr (file, gimple_default_def (cfun, var), dump_flags);
329 fprintf (file, "\n");
333 /* Dump variable VAR and its may-aliases to stderr. */
336 debug_variable (tree var)
338 dump_variable (stderr, var);
342 /* Dump various DFA statistics to FILE. */
345 dump_dfa_stats (FILE *file)
347 struct dfa_stats_d dfa_stats;
349 unsigned long size, total = 0;
350 const char * const fmt_str = "%-30s%-13s%12s\n";
351 const char * const fmt_str_1 = "%-30s%13lu%11lu%c\n";
352 const char * const fmt_str_3 = "%-43s%11lu%c\n";
354 = lang_hooks.decl_printable_name (current_function_decl, 2);
356 collect_dfa_stats (&dfa_stats);
358 fprintf (file, "\nDFA Statistics for %s\n\n", funcname);
360 fprintf (file, "---------------------------------------------------------\n");
361 fprintf (file, fmt_str, "", " Number of ", "Memory");
362 fprintf (file, fmt_str, "", " instances ", "used ");
363 fprintf (file, "---------------------------------------------------------\n");
365 size = num_referenced_vars * sizeof (tree);
367 fprintf (file, fmt_str_1, "Referenced variables", (unsigned long)num_referenced_vars,
368 SCALE (size), LABEL (size));
370 size = dfa_stats.num_var_anns * sizeof (struct var_ann_d);
372 fprintf (file, fmt_str_1, "Variables annotated", dfa_stats.num_var_anns,
373 SCALE (size), LABEL (size));
375 size = dfa_stats.num_uses * sizeof (tree *);
377 fprintf (file, fmt_str_1, "USE operands", dfa_stats.num_uses,
378 SCALE (size), LABEL (size));
380 size = dfa_stats.num_defs * sizeof (tree *);
382 fprintf (file, fmt_str_1, "DEF operands", dfa_stats.num_defs,
383 SCALE (size), LABEL (size));
385 size = dfa_stats.num_vuses * sizeof (tree *);
387 fprintf (file, fmt_str_1, "VUSE operands", dfa_stats.num_vuses,
388 SCALE (size), LABEL (size));
390 size = dfa_stats.num_vdefs * sizeof (tree *);
392 fprintf (file, fmt_str_1, "VDEF operands", dfa_stats.num_vdefs,
393 SCALE (size), LABEL (size));
395 size = dfa_stats.num_phis * sizeof (struct gimple_statement_phi);
397 fprintf (file, fmt_str_1, "PHI nodes", dfa_stats.num_phis,
398 SCALE (size), LABEL (size));
400 size = dfa_stats.num_phi_args * sizeof (struct phi_arg_d);
402 fprintf (file, fmt_str_1, "PHI arguments", dfa_stats.num_phi_args,
403 SCALE (size), LABEL (size));
405 fprintf (file, "---------------------------------------------------------\n");
406 fprintf (file, fmt_str_3, "Total memory used by DFA/SSA data", SCALE (total),
408 fprintf (file, "---------------------------------------------------------\n");
409 fprintf (file, "\n");
411 if (dfa_stats.num_phis)
412 fprintf (file, "Average number of arguments per PHI node: %.1f (max: %ld)\n",
413 (float) dfa_stats.num_phi_args / (float) dfa_stats.num_phis,
414 (long) dfa_stats.max_num_phi_args);
416 fprintf (file, "\n");
420 /* Dump DFA statistics on stderr. */
423 debug_dfa_stats (void)
425 dump_dfa_stats (stderr);
429 /* Collect DFA statistics and store them in the structure pointed to by
433 collect_dfa_stats (struct dfa_stats_d *dfa_stats_p ATTRIBUTE_UNUSED)
436 referenced_var_iterator vi;
439 gcc_assert (dfa_stats_p);
441 memset ((void *)dfa_stats_p, 0, sizeof (struct dfa_stats_d));
443 /* Count all the variable annotations. */
444 FOR_EACH_REFERENCED_VAR (var, vi)
446 dfa_stats_p->num_var_anns++;
448 /* Walk all the statements in the function counting references. */
451 gimple_stmt_iterator si;
453 for (si = gsi_start_phis (bb); !gsi_end_p (si); gsi_next (&si))
455 gimple phi = gsi_stmt (si);
456 dfa_stats_p->num_phis++;
457 dfa_stats_p->num_phi_args += gimple_phi_num_args (phi);
458 if (gimple_phi_num_args (phi) > dfa_stats_p->max_num_phi_args)
459 dfa_stats_p->max_num_phi_args = gimple_phi_num_args (phi);
462 for (si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
464 gimple stmt = gsi_stmt (si);
465 dfa_stats_p->num_defs += NUM_SSA_OPERANDS (stmt, SSA_OP_DEF);
466 dfa_stats_p->num_uses += NUM_SSA_OPERANDS (stmt, SSA_OP_USE);
467 dfa_stats_p->num_vdefs += gimple_vdef (stmt) ? 1 : 0;
468 dfa_stats_p->num_vuses += gimple_vuse (stmt) ? 1 : 0;
474 /*---------------------------------------------------------------------------
475 Miscellaneous helpers
476 ---------------------------------------------------------------------------*/
477 /* Callback for walk_tree. Used to collect variables referenced in
481 find_vars_r (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
483 /* If we are reading the lto info back in, we need to rescan the
485 if (TREE_CODE (*tp) == SSA_NAME)
486 add_referenced_var (SSA_NAME_VAR (*tp));
488 /* If T is a regular variable that the optimizers are interested
489 in, add it to the list of variables. */
490 else if (SSA_VAR_P (*tp))
491 add_referenced_var (*tp);
493 /* Type, _DECL and constant nodes have no interesting children.
495 else if (IS_TYPE_OR_DECL_P (*tp) || CONSTANT_CLASS_P (*tp))
501 /* Lookup UID in the referenced_vars hashtable and return the associated
505 referenced_var_lookup (unsigned int uid)
508 struct tree_decl_minimal in;
510 h = (tree) htab_find_with_hash (gimple_referenced_vars (cfun), &in, uid);
511 gcc_assert (h || uid == 0);
515 /* Check if TO is in the referenced_vars hash table and insert it if not.
516 Return true if it required insertion. */
519 referenced_var_check_and_insert (tree to)
522 struct tree_decl_minimal in;
523 unsigned int uid = DECL_UID (to);
526 h = (tree) htab_find_with_hash (gimple_referenced_vars (cfun), &in, uid);
529 /* DECL_UID has already been entered in the table. Verify that it is
530 the same entry as TO. See PR 27793. */
531 gcc_assert (h == to);
535 loc = (tree *) htab_find_slot_with_hash (gimple_referenced_vars (cfun),
541 /* Lookup VAR UID in the default_defs hashtable and return the associated
545 gimple_default_def (struct function *fn, tree var)
547 struct tree_decl_minimal ind;
548 struct tree_ssa_name in;
549 gcc_assert (SSA_VAR_P (var));
551 ind.uid = DECL_UID (var);
552 return (tree) htab_find_with_hash (DEFAULT_DEFS (fn), &in, DECL_UID (var));
555 /* Insert the pair VAR's UID, DEF into the default_defs hashtable. */
558 set_default_def (tree var, tree def)
560 struct tree_decl_minimal ind;
561 struct tree_ssa_name in;
564 gcc_assert (SSA_VAR_P (var));
566 ind.uid = DECL_UID (var);
569 loc = htab_find_slot_with_hash (DEFAULT_DEFS (cfun), &in,
570 DECL_UID (var), INSERT);
572 htab_remove_elt (DEFAULT_DEFS (cfun), *loc);
575 gcc_assert (TREE_CODE (def) == SSA_NAME && SSA_NAME_VAR (def) == var);
576 loc = htab_find_slot_with_hash (DEFAULT_DEFS (cfun), &in,
577 DECL_UID (var), INSERT);
579 /* Default definition might be changed by tail call optimization. */
581 SSA_NAME_IS_DEFAULT_DEF (*(tree *) loc) = false;
584 /* Mark DEF as the default definition for VAR. */
585 SSA_NAME_IS_DEFAULT_DEF (def) = true;
588 /* Add VAR to the list of referenced variables if it isn't already there. */
591 add_referenced_var (tree var)
595 v_ann = get_var_ann (var);
596 gcc_assert (DECL_P (var));
598 /* Insert VAR into the referenced_vars has table if it isn't present. */
599 if (referenced_var_check_and_insert (var))
601 /* Scan DECL_INITIAL for pointer variables as they may contain
602 address arithmetic referencing the address of other
603 variables. As we are only interested in directly referenced
604 globals or referenced locals restrict this to initializers
605 than can refer to local variables. */
606 if (DECL_INITIAL (var)
607 && DECL_CONTEXT (var) == current_function_decl)
608 walk_tree (&DECL_INITIAL (var), find_vars_r, NULL, 0);
616 /* Remove VAR from the list. */
619 remove_referenced_var (tree var)
622 struct tree_decl_minimal in;
624 unsigned int uid = DECL_UID (var);
626 /* Preserve var_anns of globals. */
627 if (!is_global_var (var)
628 && (v_ann = var_ann (var)))
631 var->base.ann = NULL;
633 gcc_assert (DECL_P (var));
635 loc = htab_find_slot_with_hash (gimple_referenced_vars (cfun), &in, uid,
637 htab_clear_slot (gimple_referenced_vars (cfun), loc);
641 /* Return the virtual variable associated to the non-scalar variable VAR. */
644 get_virtual_var (tree var)
648 if (TREE_CODE (var) == SSA_NAME)
649 var = SSA_NAME_VAR (var);
651 while (TREE_CODE (var) == REALPART_EXPR || TREE_CODE (var) == IMAGPART_EXPR
652 || handled_component_p (var))
653 var = TREE_OPERAND (var, 0);
655 /* Treating GIMPLE registers as virtual variables makes no sense.
656 Also complain if we couldn't extract a _DECL out of the original
658 gcc_assert (SSA_VAR_P (var));
659 gcc_assert (!is_gimple_reg (var));
664 /* Mark all the naked symbols in STMT for SSA renaming.
666 NOTE: This function should only be used for brand new statements.
667 If the caller is modifying an existing statement, it should use the
668 combination push_stmt_changes/pop_stmt_changes. */
671 mark_symbols_for_renaming (gimple stmt)
678 /* Mark all the operands for renaming. */
679 FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_ALL_OPERANDS)
681 mark_sym_for_renaming (op);
685 /* Find all variables within the gimplified statement that were not
686 previously visible to the function and add them to the referenced
690 find_new_referenced_vars_1 (tree *tp, int *walk_subtrees,
691 void *data ATTRIBUTE_UNUSED)
695 if (TREE_CODE (t) == VAR_DECL && !var_ann (t))
697 add_referenced_var (t);
698 mark_sym_for_renaming (t);
701 if (IS_TYPE_OR_DECL_P (t))
708 /* Find any new referenced variables in STMT. */
711 find_new_referenced_vars (gimple stmt)
713 walk_gimple_op (stmt, find_new_referenced_vars_1, NULL);
717 /* If EXP is a handled component reference for a structure, return the
718 base variable. The access range is delimited by bit positions *POFFSET and
719 *POFFSET + *PMAX_SIZE. The access size is *PSIZE bits. If either
720 *PSIZE or *PMAX_SIZE is -1, they could not be determined. If *PSIZE
721 and *PMAX_SIZE are equal, the access is non-variable. */
724 get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
725 HOST_WIDE_INT *psize,
726 HOST_WIDE_INT *pmax_size)
728 HOST_WIDE_INT bitsize = -1;
729 HOST_WIDE_INT maxsize = -1;
730 tree size_tree = NULL_TREE;
731 HOST_WIDE_INT bit_offset = 0;
732 bool seen_variable_array_ref = false;
733 bool seen_union = false;
735 /* First get the final access size from just the outermost expression. */
736 if (TREE_CODE (exp) == COMPONENT_REF)
737 size_tree = DECL_SIZE (TREE_OPERAND (exp, 1));
738 else if (TREE_CODE (exp) == BIT_FIELD_REF)
739 size_tree = TREE_OPERAND (exp, 1);
742 enum machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
744 size_tree = TYPE_SIZE (TREE_TYPE (exp));
746 bitsize = GET_MODE_BITSIZE (mode);
748 if (size_tree != NULL_TREE)
750 if (! host_integerp (size_tree, 1))
753 bitsize = TREE_INT_CST_LOW (size_tree);
756 /* Initially, maxsize is the same as the accessed element size.
757 In the following it will only grow (or become -1). */
760 /* Compute cumulative bit-offset for nested component-refs and array-refs,
761 and find the ultimate containing object. */
764 switch (TREE_CODE (exp))
767 bit_offset += tree_low_cst (TREE_OPERAND (exp, 2), 0);
772 tree field = TREE_OPERAND (exp, 1);
773 tree this_offset = component_ref_field_offset (exp);
775 if (TREE_CODE (TREE_TYPE (TREE_OPERAND (exp, 0))) == UNION_TYPE)
778 if (this_offset && TREE_CODE (this_offset) == INTEGER_CST)
780 HOST_WIDE_INT hthis_offset = tree_low_cst (this_offset, 0);
782 hthis_offset *= BITS_PER_UNIT;
783 bit_offset += hthis_offset;
784 bit_offset += tree_low_cst (DECL_FIELD_BIT_OFFSET (field), 0);
788 tree csize = TYPE_SIZE (TREE_TYPE (TREE_OPERAND (exp, 0)));
789 /* We need to adjust maxsize to the whole structure bitsize.
790 But we can subtract any constant offset seen so far,
791 because that would get us out of the structure otherwise. */
792 if (maxsize != -1 && csize && host_integerp (csize, 1))
793 maxsize = TREE_INT_CST_LOW (csize) - bit_offset;
801 case ARRAY_RANGE_REF:
803 tree index = TREE_OPERAND (exp, 1);
804 tree low_bound = array_ref_low_bound (exp);
805 tree unit_size = array_ref_element_size (exp);
807 /* If the resulting bit-offset is constant, track it. */
808 if (host_integerp (index, 0)
809 && host_integerp (low_bound, 0)
810 && host_integerp (unit_size, 1))
812 HOST_WIDE_INT hindex = tree_low_cst (index, 0);
814 hindex -= tree_low_cst (low_bound, 0);
815 hindex *= tree_low_cst (unit_size, 1);
816 hindex *= BITS_PER_UNIT;
817 bit_offset += hindex;
819 /* An array ref with a constant index up in the structure
820 hierarchy will constrain the size of any variable array ref
821 lower in the access hierarchy. */
822 seen_variable_array_ref = false;
826 tree asize = TYPE_SIZE (TREE_TYPE (TREE_OPERAND (exp, 0)));
827 /* We need to adjust maxsize to the whole array bitsize.
828 But we can subtract any constant offset seen so far,
829 because that would get us outside of the array otherwise. */
830 if (maxsize != -1 && asize && host_integerp (asize, 1))
831 maxsize = TREE_INT_CST_LOW (asize) - bit_offset;
835 /* Remember that we have seen an array ref with a variable
837 seen_variable_array_ref = true;
846 bit_offset += bitsize;
849 case VIEW_CONVERT_EXPR:
850 /* ??? We probably should give up here and bail out. */
857 exp = TREE_OPERAND (exp, 0);
861 /* We need to deal with variable arrays ending structures such as
862 struct { int length; int a[1]; } x; x.a[d]
863 struct { struct { int a; int b; } a[1]; } x; x.a[d].a
864 struct { struct { int a[1]; } a[1]; } x; x.a[0][d], x.a[d][0]
865 where we do not know maxsize for variable index accesses to
866 the array. The simplest way to conservatively deal with this
867 is to punt in the case that offset + maxsize reaches the
870 Unfortunately this is difficult to determine reliably when unions are
871 involved and so we are conservative in such cases.
873 FIXME: This approach may be too conservative, we probably want to at least
874 check that the union is the last field/element at its level or even
875 propagate the calculated offsets back up the access chain and check
878 if (seen_variable_array_ref
881 && host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1)
882 && bit_offset + maxsize
883 == (signed) TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))))))
886 /* ??? Due to negative offsets in ARRAY_REF we can end up with
887 negative bit_offset here. We might want to store a zero offset
889 *poffset = bit_offset;
891 *pmax_size = maxsize;
896 /* Returns true if STMT references an SSA_NAME that has
897 SSA_NAME_OCCURS_IN_ABNORMAL_PHI set, otherwise false. */
900 stmt_references_abnormal_ssa_name (gimple stmt)
905 FOR_EACH_SSA_USE_OPERAND (use_p, stmt, oi, SSA_OP_USE)
907 if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (USE_FROM_PTR (use_p)))