tree target_for_debug_bind (tree var) { if (!MAY_HAVE_DEBUG_STMTS) return NULL_TREE; if (TREE_CODE (var) == SSA_NAME) { var = SSA_NAME_VAR (var); if (var == NULL_TREE) return NULL_TREE; } if ((TREE_CODE (var) != VAR_DECL || VAR_DECL_IS_VIRTUAL_OPERAND (var)) && TREE_CODE (var) != PARM_DECL) return NULL_TREE; if (DECL_HAS_VALUE_EXPR_P (var)) return target_for_debug_bind (DECL_VALUE_EXPR (var)); if (DECL_IGNORED_P (var)) return NULL_TREE; /* var-tracking only tracks registers. */ if (!is_gimple_reg_type (TREE_TYPE (var))) return NULL_TREE; return var; }
static void create_vop_var (struct function *fn) { tree global_var; gcc_assert (fn->gimple_df->vop == NULL_TREE); global_var = build_decl (BUILTINS_LOCATION, VAR_DECL, get_identifier (".MEM"), void_type_node); DECL_ARTIFICIAL (global_var) = 1; DECL_IGNORED_P (global_var) = 1; TREE_READONLY (global_var) = 0; DECL_EXTERNAL (global_var) = 1; TREE_STATIC (global_var) = 1; TREE_USED (global_var) = 1; DECL_CONTEXT (global_var) = NULL_TREE; TREE_THIS_VOLATILE (global_var) = 0; TREE_ADDRESSABLE (global_var) = 0; VAR_DECL_IS_VIRTUAL_OPERAND (global_var) = 1; fn->gimple_df->vop = global_var; }