re PR middle-end/17799 (Non-optimizing compile loses 'this')
PR middle-end/17799 * function.c (use_register_for_decl): Check DECL_IGNORED_P instead of DECL_ARTIFICIAL. (assign_parms_augmented_arg_list): Set DECL_IGNORED_P. * c-decl.c (build_compound_literal): Likewise. * dwarf2asm.c (dw2_force_const_mem): Likewise. * gimplify.c (create_artificial_label): Likewise. * tree-inline.c (expand_call_inline): Likewise. * var-tracking.c (vt_initialize): Likewise. * tree-outof-ssa.c (create_temp): Copy DECL_IGNORED_P. cp/ * call.c (make_temporary_var_for_ref_to_temp): Set DECL_IGNORED_P. * class.c (build_vtable): Don't conditionallize setting it based on DWARF2_DEBUG. (layout_class_type): Set DECL_IGNORED_P. * decl2.c (get_guard): Likewise. * rtti.c (get_tinfo_decl, build_lang_decl): Likewise. * tree.c (build_local_temp): Likewise. From-SVN: r92781
This commit is contained in:
parent
8bcccf30f1
commit
78e0d62b95
|
@ -1,3 +1,16 @@
|
||||||
|
2004-12-31 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
PR middle-end/17799
|
||||||
|
* function.c (use_register_for_decl): Check DECL_IGNORED_P instead
|
||||||
|
of DECL_ARTIFICIAL.
|
||||||
|
(assign_parms_augmented_arg_list): Set DECL_IGNORED_P.
|
||||||
|
* c-decl.c (build_compound_literal): Likewise.
|
||||||
|
* dwarf2asm.c (dw2_force_const_mem): Likewise.
|
||||||
|
* gimplify.c (create_artificial_label): Likewise.
|
||||||
|
* tree-inline.c (expand_call_inline): Likewise.
|
||||||
|
* var-tracking.c (vt_initialize): Likewise.
|
||||||
|
* tree-outof-ssa.c (create_temp): Copy DECL_IGNORED_P.
|
||||||
|
|
||||||
2004-12-31 Andrew Pinski <pinskia@physics.uc.edu>
|
2004-12-31 Andrew Pinski <pinskia@physics.uc.edu>
|
||||||
|
|
||||||
PR target/19211
|
PR target/19211
|
||||||
|
|
|
@ -3479,6 +3479,7 @@ build_compound_literal (tree type, tree init)
|
||||||
DECL_DEFER_OUTPUT (decl) = 1;
|
DECL_DEFER_OUTPUT (decl) = 1;
|
||||||
DECL_COMDAT (decl) = 1;
|
DECL_COMDAT (decl) = 1;
|
||||||
DECL_ARTIFICIAL (decl) = 1;
|
DECL_ARTIFICIAL (decl) = 1;
|
||||||
|
DECL_IGNORED_P (decl) = 1;
|
||||||
pushdecl (decl);
|
pushdecl (decl);
|
||||||
rest_of_decl_compilation (decl, 1, 0);
|
rest_of_decl_compilation (decl, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,14 @@
|
||||||
|
2004-12-31 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
PR middle-end/17799
|
||||||
|
* call.c (make_temporary_var_for_ref_to_temp): Set DECL_IGNORED_P.
|
||||||
|
* class.c (build_vtable): Don't conditionallize setting it
|
||||||
|
based on DWARF2_DEBUG.
|
||||||
|
(layout_class_type): Set DECL_IGNORED_P.
|
||||||
|
* decl2.c (get_guard): Likewise.
|
||||||
|
* rtti.c (get_tinfo_decl, build_lang_decl): Likewise.
|
||||||
|
* tree.c (build_local_temp): Likewise.
|
||||||
|
|
||||||
2004-12-30 Mark Mitchell <mark@codesourcery.com>
|
2004-12-30 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
* cp-tree.h (cp_declarator): Split "name" field into
|
* cp-tree.h (cp_declarator): Split "name" field into
|
||||||
|
|
|
@ -6373,6 +6373,7 @@ make_temporary_var_for_ref_to_temp (tree decl, tree type)
|
||||||
/* Create the variable. */
|
/* Create the variable. */
|
||||||
var = build_decl (VAR_DECL, NULL_TREE, type);
|
var = build_decl (VAR_DECL, NULL_TREE, type);
|
||||||
DECL_ARTIFICIAL (var) = 1;
|
DECL_ARTIFICIAL (var) = 1;
|
||||||
|
DECL_IGNORED_P (var) = 1;
|
||||||
TREE_USED (var) = 1;
|
TREE_USED (var) = 1;
|
||||||
|
|
||||||
/* Register the variable. */
|
/* Register the variable. */
|
||||||
|
|
|
@ -659,7 +659,6 @@ build_vtable (tree class_type, tree name, tree vtable_type)
|
||||||
DECL_EXTERNAL (decl) = 1;
|
DECL_EXTERNAL (decl) = 1;
|
||||||
DECL_NOT_REALLY_EXTERN (decl) = 1;
|
DECL_NOT_REALLY_EXTERN (decl) = 1;
|
||||||
|
|
||||||
if (write_symbols == DWARF2_DEBUG)
|
|
||||||
/* Mark the VAR_DECL node representing the vtable itself as a
|
/* Mark the VAR_DECL node representing the vtable itself as a
|
||||||
"gratuitous" one, thereby forcing dwarfout.c to ignore it. It
|
"gratuitous" one, thereby forcing dwarfout.c to ignore it. It
|
||||||
is rather important that such things be ignored because any
|
is rather important that such things be ignored because any
|
||||||
|
@ -3529,13 +3528,13 @@ build_base_field (record_layout_info rli, tree binfo,
|
||||||
/* Create the FIELD_DECL. */
|
/* Create the FIELD_DECL. */
|
||||||
decl = build_decl (FIELD_DECL, NULL_TREE, CLASSTYPE_AS_BASE (basetype));
|
decl = build_decl (FIELD_DECL, NULL_TREE, CLASSTYPE_AS_BASE (basetype));
|
||||||
DECL_ARTIFICIAL (decl) = 1;
|
DECL_ARTIFICIAL (decl) = 1;
|
||||||
|
DECL_IGNORED_P (decl) = 1;
|
||||||
DECL_FIELD_CONTEXT (decl) = t;
|
DECL_FIELD_CONTEXT (decl) = t;
|
||||||
DECL_SIZE (decl) = CLASSTYPE_SIZE (basetype);
|
DECL_SIZE (decl) = CLASSTYPE_SIZE (basetype);
|
||||||
DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype);
|
DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype);
|
||||||
DECL_ALIGN (decl) = CLASSTYPE_ALIGN (basetype);
|
DECL_ALIGN (decl) = CLASSTYPE_ALIGN (basetype);
|
||||||
DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype);
|
DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype);
|
||||||
DECL_MODE (decl) = TYPE_MODE (basetype);
|
DECL_MODE (decl) = TYPE_MODE (basetype);
|
||||||
DECL_IGNORED_P (decl) = 1;
|
|
||||||
DECL_FIELD_IS_BASE (decl) = 1;
|
DECL_FIELD_IS_BASE (decl) = 1;
|
||||||
|
|
||||||
/* Try to place the field. It may take more than one try if we
|
/* Try to place the field. It may take more than one try if we
|
||||||
|
@ -4697,6 +4696,7 @@ layout_class_type (tree t, tree *virtuals_p)
|
||||||
DECL_SIZE (padding_field) = padding;
|
DECL_SIZE (padding_field) = padding;
|
||||||
DECL_CONTEXT (padding_field) = t;
|
DECL_CONTEXT (padding_field) = t;
|
||||||
DECL_ARTIFICIAL (padding_field) = 1;
|
DECL_ARTIFICIAL (padding_field) = 1;
|
||||||
|
DECL_IGNORED_P (padding_field) = 1;
|
||||||
layout_nonempty_base_or_field (rli, padding_field,
|
layout_nonempty_base_or_field (rli, padding_field,
|
||||||
NULL_TREE,
|
NULL_TREE,
|
||||||
empty_base_offsets);
|
empty_base_offsets);
|
||||||
|
|
|
@ -1998,6 +1998,7 @@ get_guard (tree decl)
|
||||||
DECL_WEAK (guard) = DECL_WEAK (decl);
|
DECL_WEAK (guard) = DECL_WEAK (decl);
|
||||||
|
|
||||||
DECL_ARTIFICIAL (guard) = 1;
|
DECL_ARTIFICIAL (guard) = 1;
|
||||||
|
DECL_IGNORED_P (guard) = 1;
|
||||||
TREE_USED (guard) = 1;
|
TREE_USED (guard) = 1;
|
||||||
pushdecl_top_level_and_finish (guard, NULL_TREE);
|
pushdecl_top_level_and_finish (guard, NULL_TREE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2341,8 +2341,8 @@ create_temporary_var (tree type)
|
||||||
decl = build_decl (VAR_DECL, NULL_TREE, type);
|
decl = build_decl (VAR_DECL, NULL_TREE, type);
|
||||||
TREE_USED (decl) = 1;
|
TREE_USED (decl) = 1;
|
||||||
DECL_ARTIFICIAL (decl) = 1;
|
DECL_ARTIFICIAL (decl) = 1;
|
||||||
DECL_SOURCE_LOCATION (decl) = input_location;
|
|
||||||
DECL_IGNORED_P (decl) = 1;
|
DECL_IGNORED_P (decl) = 1;
|
||||||
|
DECL_SOURCE_LOCATION (decl) = input_location;
|
||||||
DECL_CONTEXT (decl) = current_function_decl;
|
DECL_CONTEXT (decl) = current_function_decl;
|
||||||
|
|
||||||
return decl;
|
return decl;
|
||||||
|
|
|
@ -350,6 +350,7 @@ get_tinfo_decl (tree type)
|
||||||
TREE_TYPE (name) = type;
|
TREE_TYPE (name) = type;
|
||||||
DECL_TINFO_P (d) = 1;
|
DECL_TINFO_P (d) = 1;
|
||||||
DECL_ARTIFICIAL (d) = 1;
|
DECL_ARTIFICIAL (d) = 1;
|
||||||
|
DECL_IGNORED_P (d) = 1;
|
||||||
TREE_READONLY (d) = 1;
|
TREE_READONLY (d) = 1;
|
||||||
TREE_STATIC (d) = 1;
|
TREE_STATIC (d) = 1;
|
||||||
/* Mark the variable as undefined -- but remember that we can
|
/* Mark the variable as undefined -- but remember that we can
|
||||||
|
@ -778,6 +779,7 @@ tinfo_base_init (tree desc, tree target)
|
||||||
name_decl = build_lang_decl (VAR_DECL, name_name, name_type);
|
name_decl = build_lang_decl (VAR_DECL, name_name, name_type);
|
||||||
SET_DECL_ASSEMBLER_NAME (name_decl, name_name);
|
SET_DECL_ASSEMBLER_NAME (name_decl, name_name);
|
||||||
DECL_ARTIFICIAL (name_decl) = 1;
|
DECL_ARTIFICIAL (name_decl) = 1;
|
||||||
|
DECL_IGNORED_P (name_decl) = 1;
|
||||||
TREE_READONLY (name_decl) = 1;
|
TREE_READONLY (name_decl) = 1;
|
||||||
TREE_STATIC (name_decl) = 1;
|
TREE_STATIC (name_decl) = 1;
|
||||||
DECL_EXTERNAL (name_decl) = 0;
|
DECL_EXTERNAL (name_decl) = 0;
|
||||||
|
|
|
@ -241,6 +241,7 @@ build_local_temp (tree type)
|
||||||
{
|
{
|
||||||
tree slot = build_decl (VAR_DECL, NULL_TREE, type);
|
tree slot = build_decl (VAR_DECL, NULL_TREE, type);
|
||||||
DECL_ARTIFICIAL (slot) = 1;
|
DECL_ARTIFICIAL (slot) = 1;
|
||||||
|
DECL_IGNORED_P (slot) = 1;
|
||||||
DECL_CONTEXT (slot) = current_function_decl;
|
DECL_CONTEXT (slot) = current_function_decl;
|
||||||
layout_decl (slot, 0);
|
layout_decl (slot, 0);
|
||||||
return slot;
|
return slot;
|
||||||
|
|
|
@ -729,6 +729,7 @@ dw2_force_const_mem (rtx x)
|
||||||
id = get_identifier (ref_name);
|
id = get_identifier (ref_name);
|
||||||
decl = build_decl (VAR_DECL, id, ptr_type_node);
|
decl = build_decl (VAR_DECL, id, ptr_type_node);
|
||||||
DECL_ARTIFICIAL (decl) = 1;
|
DECL_ARTIFICIAL (decl) = 1;
|
||||||
|
DECL_IGNORED_P (decl) = 1;
|
||||||
TREE_PUBLIC (decl) = 1;
|
TREE_PUBLIC (decl) = 1;
|
||||||
DECL_INITIAL (decl) = decl;
|
DECL_INITIAL (decl) = decl;
|
||||||
make_decl_one_only (decl);
|
make_decl_one_only (decl);
|
||||||
|
@ -742,6 +743,7 @@ dw2_force_const_mem (rtx x)
|
||||||
id = get_identifier (label);
|
id = get_identifier (label);
|
||||||
decl = build_decl (VAR_DECL, id, ptr_type_node);
|
decl = build_decl (VAR_DECL, id, ptr_type_node);
|
||||||
DECL_ARTIFICIAL (decl) = 1;
|
DECL_ARTIFICIAL (decl) = 1;
|
||||||
|
DECL_IGNORED_P (decl) = 1;
|
||||||
TREE_STATIC (decl) = 1;
|
TREE_STATIC (decl) = 1;
|
||||||
DECL_INITIAL (decl) = decl;
|
DECL_INITIAL (decl) = decl;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1922,8 +1922,9 @@ use_register_for_decl (tree decl)
|
||||||
if (flag_float_store && FLOAT_TYPE_P (TREE_TYPE (decl)))
|
if (flag_float_store && FLOAT_TYPE_P (TREE_TYPE (decl)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* Compiler-generated temporaries can always go in registers. */
|
/* If we're not interested in tracking debugging information for
|
||||||
if (DECL_ARTIFICIAL (decl))
|
this decl, then we can certainly put it in a register. */
|
||||||
|
if (DECL_IGNORED_P (decl))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return (optimize || DECL_REGISTER (decl));
|
return (optimize || DECL_REGISTER (decl));
|
||||||
|
@ -2105,6 +2106,7 @@ assign_parms_augmented_arg_list (struct assign_parm_data_all *all)
|
||||||
decl = build_decl (PARM_DECL, NULL_TREE, type);
|
decl = build_decl (PARM_DECL, NULL_TREE, type);
|
||||||
DECL_ARG_TYPE (decl) = type;
|
DECL_ARG_TYPE (decl) = type;
|
||||||
DECL_ARTIFICIAL (decl) = 1;
|
DECL_ARTIFICIAL (decl) = 1;
|
||||||
|
DECL_IGNORED_P (decl) = 1;
|
||||||
|
|
||||||
TREE_CHAIN (decl) = fnargs;
|
TREE_CHAIN (decl) = fnargs;
|
||||||
fnargs = decl;
|
fnargs = decl;
|
||||||
|
|
|
@ -293,6 +293,7 @@ create_artificial_label (void)
|
||||||
tree lab = build_decl (LABEL_DECL, NULL_TREE, void_type_node);
|
tree lab = build_decl (LABEL_DECL, NULL_TREE, void_type_node);
|
||||||
|
|
||||||
DECL_ARTIFICIAL (lab) = 1;
|
DECL_ARTIFICIAL (lab) = 1;
|
||||||
|
DECL_IGNORED_P (lab) = 1;
|
||||||
DECL_CONTEXT (lab) = current_function_decl;
|
DECL_CONTEXT (lab) = current_function_decl;
|
||||||
return lab;
|
return lab;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1569,6 +1569,7 @@ expand_call_inline (tree *tp, int *walk_subtrees, void *data)
|
||||||
to the RET_LABEL. */
|
to the RET_LABEL. */
|
||||||
id->ret_label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
|
id->ret_label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
|
||||||
DECL_ARTIFICIAL (id->ret_label) = 1;
|
DECL_ARTIFICIAL (id->ret_label) = 1;
|
||||||
|
DECL_IGNORED_P (id->ret_label) = 1;
|
||||||
DECL_CONTEXT (id->ret_label) = VARRAY_TREE (id->fns, 0);
|
DECL_CONTEXT (id->ret_label) = VARRAY_TREE (id->fns, 0);
|
||||||
insert_decl_map (id, id->ret_label, id->ret_label);
|
insert_decl_map (id, id->ret_label, id->ret_label);
|
||||||
|
|
||||||
|
|
|
@ -162,6 +162,7 @@ create_temp (tree t)
|
||||||
else if (!DECL_IGNORED_P (t))
|
else if (!DECL_IGNORED_P (t))
|
||||||
DECL_DEBUG_ALIAS_OF (tmp) = t;
|
DECL_DEBUG_ALIAS_OF (tmp) = t;
|
||||||
DECL_ARTIFICIAL (tmp) = DECL_ARTIFICIAL (t);
|
DECL_ARTIFICIAL (tmp) = DECL_ARTIFICIAL (t);
|
||||||
|
DECL_IGNORED_P (tmp) = DECL_IGNORED_P (t);
|
||||||
add_referenced_tmp_var (tmp);
|
add_referenced_tmp_var (tmp);
|
||||||
|
|
||||||
/* add_referenced_tmp_var will create the annotation and set up some
|
/* add_referenced_tmp_var will create the annotation and set up some
|
||||||
|
|
|
@ -2705,6 +2705,7 @@ vt_initialize (void)
|
||||||
DECL_NAME (frame_base_decl) = get_identifier ("___frame_base_decl");
|
DECL_NAME (frame_base_decl) = get_identifier ("___frame_base_decl");
|
||||||
TREE_TYPE (frame_base_decl) = char_type_node;
|
TREE_TYPE (frame_base_decl) = char_type_node;
|
||||||
DECL_ARTIFICIAL (frame_base_decl) = 1;
|
DECL_ARTIFICIAL (frame_base_decl) = 1;
|
||||||
|
DECL_IGNORED_P (frame_base_decl) = 1;
|
||||||
|
|
||||||
/* Set its initial "location". */
|
/* Set its initial "location". */
|
||||||
frame_stack_adjust = -prologue_stack_adjust ();
|
frame_stack_adjust = -prologue_stack_adjust ();
|
||||||
|
|
Loading…
Reference in New Issue