Add a generic function to adjust cfi state from one row to another.
Use this to implement text section switching. This will also be
usable for arbitrary changes around a cfg for shrink-wrapping.
* dwarf2cfi.c (add_cfi_args_size): Split out from...
(dwarf2out_args_size): ... here.
(add_cfi_restore): Split out from ...
(dwarf2out_frame_debug_cfa_restore): ... here.
(def_cfa_0): Split out from ...
(def_cfa_1): ... here.
(cfi_oprnd_equal_p, cfi_equal_p): New.
(change_cfi_row): New.
(add_cfis_to_fde): Set fde->dw_fde_switch_cfi_index.
(create_cfi_notes): Use change_cfi_row at SWITCH_TEXT note.
(output_cfis): Remove.
* dwarf2out.c (output_fde): Simplify output_cfi loop.
(dwarf2out_switch_text_section): Don't call output_cfis.
(dw_val_equal_p, loc_descr_equal_p_1, loc_descr_equal_p): New.
* dwarf2out.h: Update decls.
(enum dw_val_class): Add dw_val_class_none.
From-SVN: r176700
To be actually used by a subsequent patch.
* dwarf2cfi.c (update_row_reg_save): New.
(dwarf2out_frame_debug_cfa_expression): Use it.
(dwarf2out_frame_debug_cfa_restore): Likewise.
(reg_save): Likewise. Do not emit DW_CFA_same_value.
From-SVN: r176699
Use it instead of old_cfa, old_args_size, and cfa_remember variables.
Remove the global cfa variable, as it was usually a duplicate of
old_cfa and otherwise confusing. Always make a local copy of the
cur_row->cfa variable before modification instead.
* dwarf2cfi.c (dw_cfi_row, dw_cfi_row_ref): New.
(cie_cfi_row): New.
(new_cfi_row, copy_cfi_row, free_cfi_row): New.
(cfa, old_cfa, cfa_remember, old_cfa_remember, old_args_size): Remove.
(cur_row, remember_row): New.
(def_cfa_1): Use cur_row instead of the old_* variables.
(dwarf2out_frame_debug_restore_state): Similarly.
(dwarf2out_args_size, dwarf2out_notice_stack_adjust): Likewise.
(dwarf2out_frame_debug_def_cfa): Use a local variable instead of cfa.
(dwarf2out_frame_debug_adjust_cfa): Likewise.
(dwarf2out_frame_debug_cfa_offset): Likewise.
(dwarf2out_frame_debug_expr): Likewise.
(execute_dwarf2_frame): Set up cur_row.
* dwarf2out.h (struct cfa_loc): Mark for GTY.
From-SVN: r176697
* jump.c (maybe_propagate_label_ref): Split out of...
(mark_all_labels): ... here. Do not attempt label_ref
propagation while in cfglayout mode.
From-SVN: r176663
Warn about the use of final/override in non-c++0x mode, and
add __final for non-c++0x mode.
* cp-tree.h (cpp0x_warn_str): Add CPP0X_OVERRIDE_CONTROLS.
* error.c (maybe_warn_cpp0x): Adjust.
* parser.c (cp_parser_virt_specifier_seq_opt): Use it. Add
'__final' as a non-c++0x alternative for 'final'.
From-SVN: r176655
* dwarf2.h (DW_AT_GNU_macros): New.
(enum dwarf_macro_record_type): New enum. Add DW_MACRO_GNU_*.
* dwarf2out.c (struct macinfo_struct): Change code to unsigned char.
(DEBUG_MACRO_SECTION, DEBUG_MACRO_SECTION_LABEL): Define.
(dwarf_attr_name): Handle DW_AT_GNU_macros.
(dwarf2out_define): If the vector is empty and
lineno is 0, emit a dummy entry first.
(dwarf2out_undef): Likewise. Remove redundant semicolon.
(htab_macinfo_hash, htab_macinfo_eq, output_macinfo_op,
optimize_macinfo_range): New functions.
(output_macinfo): Use them. If !dwarf_strict and .debug_str is
mergeable, optimize longer strings using
DW_MACRO_GNU_{define,undef}_indirect and if HAVE_COMDAT_GROUP,
optimize longer sequences of define/undef ops from headers
using DW_MACRO_GNU_transparent_include. For !dwarf_strict
emit a section headers.
(dwarf2out_init): For !dwarf_strict set debug_macinfo_section
and macinfo_section_label to DEBUG_MACRO_SECTION
resp. DEBUG_MACRO_SECTION_LABEL.
(dwarf2out_finish): For !dwarf_strict emit DW_AT_GNU_macros
instead of DW_AT_macro_info.
From-SVN: r176653
PR other/32998
* common.opt (grecord-gcc-switches, gno-record-gcc-switches): New
options.
* dwarf2out.c: Include opts.h.
(dchar_p): New typedef. Define heap VEC for it.
(producer_string): New variable.
(gen_producer_string): New function.
(gen_compile_unit_die): Use it.
(dwarf2out_finish): Fix up comp_unit_die () DW_AT_producer
if needed.
* Makefile.in (dwarf2out.o): Depend on $(OPTS_H).
* doc/invoke.texi: Document -grecord-gcc-switches and
-gno-record-gcc-switches, add a -grecord-gcc-switches reference
to -frecord-gcc-switches description.
From-SVN: r176652
PR c++/49813
* c-opts.c (set_std_cxx0x): Set flag_isoc94 and flag_isoc99.
* c-pretty-print.c (pp_c_cv_qualifiers): Check c_dialect_cxx as well
as flag_isoc99 for 'restrict'.
(pp_c_specifier_qualifier_list): Likewise for _Complex.
From-SVN: r176635
gcc/
2011-07-22 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (ix86_option_override_internal): Disallow
MS ABI in x32 mode.
(ix86_init_builtins): Call ix86_init_builtins_va_builtins_abi
only for TARGET_LP64.
(ix86_handle_abi_attribute): Check TARGET_LP64 instead of
TARGET_64BIT.
gcc/testsuite/
2011-07-22 H.J. Lu <hongjiu.lu@intel.com>
* gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c: Only run
on lp64 targets.
* gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c: Likewise.
* gcc/testsuite/gcc.target/i386/avx-vzeroupper-18.c: Likewise.
* gcc/testsuite/gcc.target/i386/pr43662.c: Likewise.
* gcc/testsuite/gcc.target/i386/pr43869.c: Likewise.
* gcc.target/x86_64/abi/callabi/callabi.exp: Check ilp32
instead of ia32.
From-SVN: r176634
2011-07-22 Martin Jambor <mjambor@suse.cz>
PR lto/49796
* cgraphunit.c (verify_edge_corresponds_to_fndecl): Return false
if decl node is in another partition, call cgraph_get_node only
once.
From-SVN: r176630
2011-07-21 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (ix86_expand_move): Convert to Pmode if
needed and use force_reg after convert.
(ix86_expand_call): Likewise.
(ix86_expand_special_args_builtin): Likewise.
(ix86_expand_builtin): Likewise.
From-SVN: r176612
2011-07-21 Daniel Carrera <dcarrera@gmail.com>
* trans.c (gfc_allocate_with_status): Split into two functions
gfc_allocate_using_malloc and gfc_allocate_usig_lib.
(gfc_allocate_using_malloc): The status parameter is now the
actual status rather than a pointer. Code cleanup.
(gfc_allocate_using_lib): Ditto. Add new parametrs errmsg and
errlen. Pass these to the coarray lib.
* trans-openmp.c (gfc_omp_clause_default_ctor): Update calls to
gfc_allocate_allocatable.
(gfc_omp_clause_copy_ctor): Ditto.
(gfc_trans_omp_array_reduction): Ditto.
* trans-stmt.c (gfc_trans_allocate): Ditto. Update call to
gfc_allocate_using_malloc. Pass stat rather than pstat to the allocate
fuctions. If using coarray lib, pass errmsg and errlen to the allocate
functions. Move error checking outside the if (!gfc_array_allocate)
block so that it also affects trees produced by gfc_array_allocate.
* trans-array.c (gfc_array_allocate): Add new parameters errmsg
and errlen. Replace parameter pstat by status. Code cleanup. Update
calls to gfc_allocate_allocatable and gfc_allocate_using_malloc.
* trans-array.h (gfc_array_allocate): Update signature of
gfc_array_allocate.
From-SVN: r176606
2011-07-21 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/47654
PR middle-end/49649
* graphite-clast-to-gimple.c (type_for_clast_term): Pass v1 and v2
in parameter. Initialize v1 and v2 based on the values returned
by clast_name_to_lb_ub.
(type_for_clast_red): Pass v1 and v2 in parameter, and set their
values.
(type_for_clast_bin): Same.
(type_for_clast_expr): Same.
(type_for_clast_eq): Update calls to type_for_clast_expr.
(type_for_clast_for): Same.
(build_iv_mapping): Same.
* graphite-ppl.h (value_min): New.
* gcc.dg/graphite/run-id-pr47654.c: New.
From-SVN: r176605
2011-07-21 Sebastian Pop <sebastian.pop@amd.com>
* graphite-clast-to-gimple.c (type_for_interval): Generate signed
types whenever possible.
From-SVN: r176604
2011-07-21 Sebastian Pop <sebastian.pop@amd.com>
* graphite-clast-to-gimple.c (struct clast_name_index): Add lb
and ub fields.
(new_clast_name_index): Add lb and ub parameters.
(free_clast_name_index): New.
(clast_name_to_lb_ub): New.
(save_clast_name_index): Add lb and ub parameters.
(compute_bounds_for_param): New.
(type_for_level): Removed.
(type_for_clast_for): Removed level parameter. Do not call
type_for_level.
(graphite_create_new_loop): Store the lb and ub for the clast_name
of the iterator of the loop that has been generated.
(graphite_create_new_loop_guard): Remove parameter level.
(create_params_index): Store the lb and ub of each parameter.
(gloog): Use free_clast_name_index. Pass to create_params_index
the current scop.
From-SVN: r176603