Commit Graph

110580 Commits

Author SHA1 Message Date
Richard Sandiford
59daeef4e1 re PR tree-optimization/49809 (gimple_check failure at -O3)
gcc/
	PR tree-optimization/49809
	* tree-ssa-phiopt.c (cond_if_else_store_replacement): Use
	gimple_get_lhs instead of gimple_assign_lhs.

gcc/testsuite/
	PR tree-optimization/49809
	* gnat.dg/opt18.adb, gnat.dg/opt18.ads, gnat.dg/opt18_pkg.ads: New
	test.

From-SVN: r176750
2011-07-25 14:51:47 +00:00
Rainer Orth
a024b70f10 system.h [...]: Wrap C function declarations in extern "C".
* system.h [__cplusplus]: Wrap C function declarations in extern "C".
-This line, and those below, will be ignored--

M    ChangeLog
M    system.h

From-SVN: r176748
2011-07-25 14:26:58 +00:00
Rainer Orth
4d1c74214e system.h [...]: Wrap C function declarations in extern "C".
gcc:
	* system.h [__cplusplus]: Wrap C function declarations in extern "C".

	include:
	* xregex.h (regoff_t): Define.

From-SVN: r176747
2011-07-25 14:24:59 +00:00
Richard Guenther
7fdab8d4fc re PR tree-optimization/49822 (Segfault in remove_prop_source_from_use)
2011-07-25  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/49822
	* tree-ssa-forwprop.c (remove_prop_source_from_use): Robustify
	more.  Make sure to preserve stmts with side-effects.  Properly
	handle virtual defs, follow a longer def chain.

From-SVN: r176745
2011-07-25 14:15:02 +00:00
Romain Geissler
1baae426f9 behalf of romain.geissler@gmail.com. Fix plugin file installation
From-SVN: r176741
2011-07-25 13:15:12 +02:00
Eric Botcazou
264b47b0b9 ipa-inline.c (can_inline_edge_p): Look into DECL_STRUCT_FUNCTION of original nodes if...
* ipa-inline.c (can_inline_edge_p): Look into DECL_STRUCT_FUNCTION of
	original nodes if we are dealing with virtual clones.

From-SVN: r176739
2011-07-25 10:40:10 +00:00
Bernd Schmidt
3d02ae6520 * common/config/c6x/c6x-common.c: New file.
From-SVN: r176738
2011-07-25 10:37:07 +00:00
Roman Zhuykov
2eaa698b5d tree-flow.h (tree_ssa_loop_version): Remove unused declaration.
2011-07-25  Roman Zhuykov  <zhroma@ispras.ru>

	* tree-flow.h (tree_ssa_loop_version): Remove unused declaration.

From-SVN: r176737
2011-07-25 13:43:01 +04:00
Richard Guenther
ebeadd9141 re PR tree-optimization/49715 (Could do more efficient unsigned-to-float to conversions based on range information)
2011-07-25  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/49715
	* tree-vrp.c: Include expr.h and optabs.h.
	(range_fits_type_): New function.
	(simplify_float_conversion_using_ranges): Likewise.
	(simplify_stmt_using_ranges): Call it.
	* Makefile.in (tree-vrp.o): Add $(EXPR_H) and $(OPTABS_H) dependencies.
	* optabs.c (can_float_p): Export.
	* optabs.h (can_float_p): Declare.

	* gcc.target/i386/pr49715-1.c: New testcase.
	* gcc.target/i386/pr49715-2.c: Likewise.

From-SVN: r176735
2011-07-25 08:30:46 +00:00
Richard Guenther
d92562770a tree-vrp.c (num_vr_values, [...]): New global vars.
2011-07-25  Richard Guenther  <rguenther@suse.de>

	* tree-vrp.c (num_vr_values, values_propagated): New global vars.
	(get_value_range): For out-of-range SSA names or names created
	after propagation return a read-only varying range.
	(dump_all_value_ranges): Adjust.
	(vrp_initialize): Likewise.
	(vrp_finalize): Likewise.

From-SVN: r176734
2011-07-25 08:29:01 +00:00
Jason Merrill
3bb4eb1cb3 re PR c++/49823 ([C++0x] ICE on decltype(expr)::type with template)
PR c++/49823
	* parser.c (cp_parser_qualifying_entity): Handle templates.

From-SVN: r176732
2011-07-25 01:03:50 -04:00
Richard Henderson
149e741d2c re PR debug/49831 (arm-linux-gnueabi bootstrap failures due to ICE in dwarf2cfi.c connect_traces)
PR debug/49831
        * dwarf2cfi.c (connect_traces): Allow unvisited traces.  Skip
        them entirely.

Constant pools are emitted in such a way as to be indistinguishable
from regular instructions, and these constant pools are, naturally,
not reachable as code.

From-SVN: r176730
2011-07-24 20:35:05 -07:00
Richard Henderson
981dc73548 re PR debug/49825 (Many testcase failures)
PR debug/49825
        * dwarf2cfi.c (dwarf2out_stack_adjust): Move A_O_A test earlier.
        (dwarf2out_notice_stack_adjust): Use args_size from call_insn.

From-SVN: r176729
2011-07-24 20:26:35 -07:00
Richard Henderson
3382318ac8 re PR debug/49827 (sparc64-linux and cris-elf bootstrap failures due to ICE in dwarf2cfi.c connect_traces)
PR debug/49827
        * dwarf2cfi.c (create_trace_edges): Handle sequences properly.

From-SVN: r176728
2011-07-24 20:18:13 -07:00
Richard Henderson
2f23f97acc dwarf2cfi: Reset args_size properly across abnormal edges.
* dwarf2cfi.c (maybe_record_trace_start): Add abnormal parameter.
        Zero args_size for abnormal edges.  Adjust all callers.

From-SVN: r176727
2011-07-24 20:10:42 -07:00
Richard Henderson
2edb462ee4 re PR debug/49825 (Many testcase failures)
PR debug/49825

Test case gcc.c-torture/compile/pr49474.c, among others.

        * dwarf2cfi.c (cfi_row_equal_p): Don't compare args_size.

From-SVN: r176726
2011-07-24 20:05:06 -07:00
H.J. Lu
96d5384b23 Remove the unused demangle_flag in collect2.c.
2011-07-24  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/49835
	* collect2.c (demangle_flag): Removed.

From-SVN: r176725
2011-07-24 19:08:44 -07:00
GCC Administrator
ffca09fddb Daily bump.
From-SVN: r176724
2011-07-25 00:18:53 +00:00
Sandra Loosemore
df45fc34aa configure.ac (demangler_in_ld): Default to yes.
2011-07-24  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* configure.ac (demangler_in_ld): Default to yes.
	* configure: Regenerated.
	* collect2.c (main): When HAVE_LD_DEMANGLE is defined, don't
	mess with COLLECT_NO_DEMANGLE, and just pass --demangle and
	--no-demangle options straight through to ld.  When
	HAVE_LD_DEMANGLE is not defined, set COLLECT_NO_DEMANGLE in a
	way that has the intended effect on Windows.

From-SVN: r176720
2011-07-24 19:22:41 -04:00
Paolo Carlini
73645647f9 hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt, [...]): Fix typos in the last commit.
2011-07-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/hashtable_policy.h (_Prime_rehash_policy::_M_next_bkt,
	_M_bkt_for_elements, _M_need_rehash): Fix typos in the last commit.

From-SVN: r176718
2011-07-24 19:47:04 +00:00
François Dumont
4f7b188f20 hashtable_policy.h (_Prime_rehash_policy): Use __builtin_floor rather than __builtin_ceil to compute next resize value.
2011-07-24  François Dumont  <francois.cppdevs@free.fr>

        * include/bits/hashtable_policy.h (_Prime_rehash_policy): Use
        __builtin_floor rather than __builtin_ceil to compute next resize
        value.
        * testsuite/23_containers/unordered_set/hash_policy/load_factor.cc:
        New.

From-SVN: r176717
2011-07-24 19:20:26 +00:00
Eric Botcazou
7d5997c66c decl.c (gnat_to_gnu_entity): If the subprogram has copy-in copy-out parameters...
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: If the
	subprogram has copy-in copy-out parameters, try to promote the mode of
	the return type if it is passed in registers.

From-SVN: r176714
2011-07-24 13:14:17 +00:00
Eric Botcazou
4b4cfdd5e1 utils2.c (build_binary_op): Do not mark the left operand as addressable.
* gcc-interface/utils2.c (build_binary_op) <ARRAY_REF>: Do not mark the
	left operand as addressable.

From-SVN: r176713
2011-07-24 12:50:41 +00:00
Eric Botcazou
f3d3457603 gigi.h (build_function_stub): Remove.
* gcc-interface/gigi.h (build_function_stub): Remove.
	(build_return_expr): Likewise.
	(convert_vms_descriptor): Declare.
	* gcc-interface/utils.c (convert_vms_descriptor): Make global.
	(build_function_stub): Move to...
	* gcc-interface/utils2.c (build_return_expr): Move to...
	* gcc-interface/trans.c (build_function_stub): ...here.
	(build_return_expr): ...here.
	(Subprogram_Body_to_gnu): Add local variable for language_function.
	Disconnect the parameter attributes cache, if any, once done with it.
	Call end_subprog_body only after setting the end_locus.
	Build the stub associated with the function, if any, at the very end.
	(gnat_to_gnu) <N_Return_Statement>: Remove couple of useless local
	variables and streamline control flow.

From-SVN: r176712
2011-07-24 12:45:44 +00:00
GCC Administrator
40ecdf413f Daily bump.
From-SVN: r176711
2011-07-24 00:18:49 +00:00
Richard Henderson
829bdd4b09 dwarf2cfi: Generate and connect traces.
This kinda-sorta corresponds to Bernd's 007-dw2cfi patch.  Certainly
the same concepts of splitting the instruction stream into extended
basic blocks is the same.  This patch does a bit better job with the
documentation.  Also, I'm a bit more explicit about matching things
up with the similar code from the regular CFG routines.

What's missing at this point is any attempt to use DW_CFA_remember_state.
I've deferred that for the moment because it's easy to test the state
change code across epilogues, whereas the shrink-wrapping code is not
in this tree and section switching is difficult to force.

        * dwarf2cfi.c: Include basic-block.h.
        (dw_label_info): Remove.
        (trace_work_list, trace_index): New.
        (remember_row, emit_cfa_remember): Remove.
        (dw_trace_info_hash, dw_trace_info_eq): New.
        (get_trace_index, get_trace_info): New.
        (save_point_p): New.
        (free_cfi_row): Remove.
        (add_cfi): Do not emit DW_CFA_remember_state.
        (cfa_row_equal_p): New.
        (barrier_args_size): Remove.
        (compute_barrier_args_size_1, compute_barrier_args_size): Remove.
        (dwarf2out_notice_stack_adjust): Don't compute_barrier_args_size.
        (maybe_record_trace_start, create_trace_edges, scan_trace): New.
        (dwarf2out_cfi_begin_epilogue): Remove.
        (dwarf2out_frame_debug_restore_state): Remove.
        (connect_traces, create_pseudo_cfg): New.
        (create_cfi_notes, execute_dwarf2_frame): Rewrite using traces.
        * Makefile.in (dwarf2cfi.o): Update.

From-SVN: r176705
2011-07-23 13:49:33 -07:00
Richard Henderson
43215a89ec dwarf2cfi: Introduce dw_trace_info.
This patch only introduces the structure definition and adjusts
the existing routines to use the new cur_trace global to access
the variables that were moved into the structure.

        * dwarf2cfi.c (dw_trace_info): New.
        (dw_label_info): New.
        (cie_return_save): New.
        (cur_trace): New.
        (queued_args_size): Rename from args_size.  Update all users.
        (cfa_store, cfa_temp, regs_saved_in_regs): Remove.
        (def_cfa_1): Use cur_trace instead of cfa_*.
        (dwarf2out_stack_adjust, record_reg_saved_in_reg): Likewise.
        (clobbers_queued_reg_save, reg_saved_in): Likewise.
        (dwarf2out_frame_debug_expr): Likewise.
        (create_cie_data): Split out from ...
        (execute_dwarf2_frame): ... here.  Initialize cur_trace.

From-SVN: r176704
2011-07-23 13:36:36 -07:00
Richard Henderson
6ffc63e112 dwarf2cfi: Allocate reg_saved_in_data in the heap.
* dwarf2cfi.c (regs_saved_in_regs): Allocate from heap, not gc.
        Update all users to match.
        (execute_dwarf2_frame): Free reg_saved_in_data.

From-SVN: r176703
2011-07-23 13:27:32 -07:00
Richard Henderson
999646c1ee dwarf2cfi: Convert queued_reg_save to a VEC.
Also, allocate it in the heap instead of garbage collected.

        * dwarf2cfi.c (queued_reg_save): Reorder for packing.  Don't GTY.
        (queued_reg_saves): Don't GTY.  Change to a VEC.
        (queue_reg_save): Update to match.
        (dwarf2out_flush_queued_reg_saves): Likewise.
        (clobbers_queued_reg_save): Likewise.
        (reg_saved_in): Likewise.
        (execute_dwarf2_frame): Free queued_reg_saves.

From-SVN: r176702
2011-07-23 13:25:47 -07:00
Richard Henderson
ce363ef2bd dwarf2cfi: Remove dw_cfi_row_ref typedef.
* dwarf2cfi.c (dw_cfi_row_ref): Remove.  Update all users.

From-SVN: r176701
2011-07-23 13:19:22 -07:00
Richard Henderson
57e16c9625 dwarf2cfi: Implement change_cfi_row.
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
2011-07-23 13:17:54 -07:00
Richard Henderson
f1a0e8300d dwarf2cfi: Populate CUR_ROW->REG_SAVE.
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
2011-07-23 13:06:42 -07:00
Richard Henderson
141618e22d dwarf2cfi: Rename cfi_insn to add_cfi_insn.
Make it consistent with add_cfi_vec.

        * dwarf2cfi.c (add_cfi_insn): Rename from cfi_insn.  Update all users.

From-SVN: r176698
2011-07-23 13:00:43 -07:00
Richard Henderson
f17d3401b9 dwarf2cfi: Introduce a dw_cfi_row state.
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
2011-07-23 12:58:46 -07:00
Richard Henderson
0be7e7a6db bb-reorder: Split EH edges crossing partitions.
From-SVN: r176696
2011-07-23 12:44:19 -07:00
Richard Earnshaw
e01705517a re PR target/49816 (arm.c:3999:12: error: converting 'false' to pointer type 'rtx')
PR target/49816
	* arm.c (aapcs_vfp_allocate_return_reg): Return NULL on failure.

From-SVN: r176687
2011-07-23 14:43:33 +00:00
Andreas Schwab
53390685bd ctime.c: Include <stdlib.h>.
* libgfortran/intrinsics/ctime.c: Include <stdlib.h>.
* libgfortran/intrinsics/getlog.c: Likewise.
* libgfortran/runtime/stop.c: Likewise.

From-SVN: r176675
2011-07-23 11:06:04 +00:00
Arnaud Charlet
0a6ecc0829 re PR ada/49819 (bogus reference to g-trasym-dwarf.adb in Makefile)
2011-07-23  Arnaud Charlet  <charlet@adacore.com>

	PR ada/49819
	* gcc-interface/Makefile.in (powerpc-linux): Remove reference to
	g-trasym-dwarf.adb.

From-SVN: r176673
2011-07-23 11:19:44 +02:00
Benjamin Kosnik
9b9e81a0a9 move.h (move, forward): Mark constexpr.
2011-07-22  Benjamin Kosnik  <bkoz@redhat.com>
	    Daniel Krugler  <daniel.kruegler@googlemail.com>

	* include/bits/move.h (move, forward): Mark constexpr.
	* include/bits/stl_pair.h (pair): Mark move ctors constexpr.
	* testsuite/20_util/pair/make_pair/constexpr.cc: New.
	* testsuite/20_util/pair/cons/constexpr.cc: Add tests.


Co-Authored-By: Daniel Krugler <daniel.kruegler@googlemail.com>

From-SVN: r176672
2011-07-23 03:17:11 +00:00
Jason Merrill
15c2ccbac5 * doc/invoke.texi (C++ Dialect Options): Document -Wno-narrowing.
From-SVN: r176670
2011-07-22 20:30:13 -04:00
GCC Administrator
5b960c5a6e Daily bump.
From-SVN: r176669
2011-07-23 00:18:28 +00:00
Jason Merrill
76f86d00d9 re PR c++/49793 ([C++0x] Narrowing conversion from int/short/char to double)
PR c++/49793
	* typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
	Make conditional on -Wnarrowing.

From-SVN: r176665
2011-07-22 20:14:46 -04:00
Richard Henderson
295331a419 * bb-reorder.c (gate_handle_partition_blocks): Honor optimize.
From-SVN: r176664
2011-07-22 16:54:29 -07:00
Richard Henderson
5f93b30abd Fix mark_all_labels vs cfglayout mode.
* 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
2011-07-22 16:19:25 -07:00
Gerald Pfeifer
a0a22423b0 re PR target/49817 (libiberty/stack-limit.c causes a bootstrap failure on all FreeBSD targets)
PR target/49817
	* stack-limit.c: Include <stdint.h>.

From-SVN: r176662
2011-07-22 22:52:55 +00:00
Tobias Burnus
f5e62ce922 re PR libfortran/49791 (Formatted namelist reads fails with: Cannot match namelist object)
2011-07-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/49791
        * io/list_read.c (nml_parse_qualifier): Remove check to
        enabled extended read for another case.

2011-07-23  Tobias Burnus  <burnus@net-b.de>

        PR fortran/49791
        * gfortran.dg/namelist_72.f: New.

From-SVN: r176661
2011-07-23 00:44:20 +02:00
Tobias Burnus
efc694a70a resolve.c (resolve_symbol): Fix coarray var decl check.
2011-07-23  Tobias Burnus  <burnus@net-b.de>

        * resolve.c (resolve_symbol): Fix coarray var decl check.

2011-07-23  Tobias Burnus  <burnus@net-b.de>

        * gfortran.dg/coarray_25.f90: New.

From-SVN: r176660
2011-07-23 00:39:10 +02:00
Ville Voutilainen
eda42c4f3c Warn about the use of final/override in non-c++0x mode, and add __final for non-c++0x mode.
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
2011-07-22 17:05:58 -04:00
Jakub Jelinek
520cda8ca8 dwarf2.h (DW_AT_GNU_macros): New.
* 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
2011-07-22 22:06:09 +02:00
Jakub Jelinek
e967adf4e2 re PR other/32998 (-frecord-gcc-switches issues)
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
2011-07-22 22:03:33 +02:00