Commit f04c1e0a by Jakub Jelinek Committed by Jakub Jelinek

dwarf2out.h (enum dw_val_class): Add dw_val_class_const_implicit...

	* dwarf2out.h (enum dw_val_class): Add dw_val_class_const_implicit,
	dw_val_class_unsigned_const_implicit and dw_val_class_file_implicit.
	(struct dw_val_node): Add val_file_implicit field.
	* dwarf2out.c (dw_val_equal_p, print_dw_val, attr_checksum,
	attr_checksum_ordered, same_dw_val_p, size_of_die, value_format,
	output_die): Handle dw_val_class_const_implicit,
	dw_val_class_unsigned_const_implicit and dw_val_class_file_implicit.
	(abbrev_die_table): Change into va_gc vec.
	(abbrev_die_table_allocated, abbrev_die_table_in_use,
	ABBREV_DIE_TABLE_INCREMENT): Remove.
	(AT_int, AT_unsigned, AT_file): Allow dw_val_class_*_implicit.
	(abbrev_opt_start, abbrev_usage_count, sorted_abbrev_dies): New
	variables.
	(build_abbrev_table): Adjust for abbrev_die_table being a va_gc vec.
	If abbrev_opt_start, fill in abbrev_usage_count and abbrev_dies
	vectors.
	(die_abbrev_cmp, optimize_implicit_const, optimize_abbrev_table): New
	functions.
	(output_die_abbrevs): For DW_FORM_implicit_const emit sleb128 with
	the implicit value.
	(output_abbrev_section): Adjust for abbrev_die_table being a va_gc
	vec.
	(output_comp_unit): Initialize abbrev_opt_start if emitting the main
	unit.  Call optimize_abbrev_table.
	(dwarf2out_init, dwarf2out_finish, dwarf2out_c_finalize): Adjust for
	abbrev_die_table being a va_gc vec.

From-SVN: r241709
parent aee69156
2016-10-31 Jakub Jelinek <jakub@redhat.com> 2016-10-31 Jakub Jelinek <jakub@redhat.com>
* dwarf2out.h (enum dw_val_class): Add dw_val_class_const_implicit,
dw_val_class_unsigned_const_implicit and dw_val_class_file_implicit.
(struct dw_val_node): Add val_file_implicit field.
* dwarf2out.c (dw_val_equal_p, print_dw_val, attr_checksum,
attr_checksum_ordered, same_dw_val_p, size_of_die, value_format,
output_die): Handle dw_val_class_const_implicit,
dw_val_class_unsigned_const_implicit and dw_val_class_file_implicit.
(abbrev_die_table): Change into va_gc vec.
(abbrev_die_table_allocated, abbrev_die_table_in_use,
ABBREV_DIE_TABLE_INCREMENT): Remove.
(AT_int, AT_unsigned, AT_file): Allow dw_val_class_*_implicit.
(abbrev_opt_start, abbrev_usage_count, sorted_abbrev_dies): New
variables.
(build_abbrev_table): Adjust for abbrev_die_table being a va_gc vec.
If abbrev_opt_start, fill in abbrev_usage_count and abbrev_dies
vectors.
(die_abbrev_cmp, optimize_implicit_const, optimize_abbrev_table): New
functions.
(output_die_abbrevs): For DW_FORM_implicit_const emit sleb128 with
the implicit value.
(output_abbrev_section): Adjust for abbrev_die_table being a va_gc
vec.
(output_comp_unit): Initialize abbrev_opt_start if emitting the main
unit. Call optimize_abbrev_table.
(dwarf2out_init, dwarf2out_finish, dwarf2out_c_finalize): Adjust for
abbrev_die_table being a va_gc vec.
PR tree-optimization/77860 PR tree-optimization/77860
* tree-ssa-reassoc.c (eliminate_using_constants): Handle * tree-ssa-reassoc.c (eliminate_using_constants): Handle
also integral complex and vector constants. also integral complex and vector constants.
...@@ -153,7 +153,10 @@ enum dw_val_class ...@@ -153,7 +153,10 @@ enum dw_val_class
dw_val_class_vms_delta, dw_val_class_vms_delta,
dw_val_class_high_pc, dw_val_class_high_pc,
dw_val_class_discr_value, dw_val_class_discr_value,
dw_val_class_discr_list dw_val_class_discr_list,
dw_val_class_const_implicit,
dw_val_class_unsigned_const_implicit,
dw_val_class_file_implicit
}; };
/* Describe a floating point constant value, or a vector constant value. */ /* Describe a floating point constant value, or a vector constant value. */
...@@ -198,7 +201,8 @@ struct GTY(()) dw_val_node { ...@@ -198,7 +201,8 @@ struct GTY(()) dw_val_node {
dw_loc_list_ref GTY ((tag ("dw_val_class_loc_list"))) val_loc_list; dw_loc_list_ref GTY ((tag ("dw_val_class_loc_list"))) val_loc_list;
dw_loc_descr_ref GTY ((tag ("dw_val_class_loc"))) val_loc; dw_loc_descr_ref GTY ((tag ("dw_val_class_loc"))) val_loc;
HOST_WIDE_INT GTY ((default)) val_int; HOST_WIDE_INT GTY ((default)) val_int;
unsigned HOST_WIDE_INT GTY ((tag ("dw_val_class_unsigned_const"))) val_unsigned; unsigned HOST_WIDE_INT
GTY ((tag ("dw_val_class_unsigned_const"))) val_unsigned;
double_int GTY ((tag ("dw_val_class_const_double"))) val_double; double_int GTY ((tag ("dw_val_class_const_double"))) val_double;
wide_int_ptr GTY ((tag ("dw_val_class_wide_int"))) val_wide; wide_int_ptr GTY ((tag ("dw_val_class_wide_int"))) val_wide;
dw_vec_const GTY ((tag ("dw_val_class_vec"))) val_vec; dw_vec_const GTY ((tag ("dw_val_class_vec"))) val_vec;
...@@ -212,6 +216,8 @@ struct GTY(()) dw_val_node { ...@@ -212,6 +216,8 @@ struct GTY(()) dw_val_node {
char * GTY ((tag ("dw_val_class_lbl_id"))) val_lbl_id; char * GTY ((tag ("dw_val_class_lbl_id"))) val_lbl_id;
unsigned char GTY ((tag ("dw_val_class_flag"))) val_flag; unsigned char GTY ((tag ("dw_val_class_flag"))) val_flag;
struct dwarf_file_data * GTY ((tag ("dw_val_class_file"))) val_file; struct dwarf_file_data * GTY ((tag ("dw_val_class_file"))) val_file;
struct dwarf_file_data *
GTY ((tag ("dw_val_class_file_implicit"))) val_file_implicit;
unsigned char GTY ((tag ("dw_val_class_data8"))) val_data8[8]; unsigned char GTY ((tag ("dw_val_class_data8"))) val_data8[8];
tree GTY ((tag ("dw_val_class_decl_ref"))) val_decl_ref; tree GTY ((tag ("dw_val_class_decl_ref"))) val_decl_ref;
struct dw_val_vms_delta_union struct dw_val_vms_delta_union
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment