Commit Graph

110043 Commits

Author SHA1 Message Date
Jonathan Wakely 677aad9c92 Makefile.am: Add new header.
2011-07-09  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/std/scoped_allocator: New.
	* doc/xml/manual/status_cxx200x.xml: Update.
	* testsuite/20_util/scoped_allocator/1.cc: New.
	* testsuite/20_util/scoped_allocator/propagation.cc: New.
	* testsuite/20_util/scoped_allocator/requirements/typedefs.cc: New.
	* testsuite/20_util/scoped_allocator/requirements/
	explicit_instantiation.cc: New.

From-SVN: r176079
2011-07-09 14:45:56 +01:00
Jonathan Wakely bd8485dc9f stl_vector.h: Use new allocator model in C++0x mode.
2011-07-09  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/bits/stl_vector.h: Use new allocator model in C++0x mode.
	* include/bits/vector.tcc: Likewise.
	* testsuite/util/testsuite_allocator.h (propagating_allocator): Define.
	* testsuite/23_containers/vector/allocator/copy_assign.cc: New.
	* testsuite/23_containers/vector/allocator/noexcept.cc: New.
	* testsuite/23_containers/vector/allocator/copy.cc: New.
	* testsuite/23_containers/vector/allocator/swap.cc: New.
	* testsuite/23_containers/vector/allocator/move_assign.cc: New.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust dg-error line numbers.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc:
	Likewise.

From-SVN: r176078
2011-07-09 14:06:29 +01:00
Jonathan Wakely d526242cd8 alloc_traits.h (__allocator_always_compares_equal): New trait, provide partial specializations for known allocators.
2011-07-09  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/ext/alloc_traits.h (__allocator_always_compares_equal): New
	trait, provide partial specializations for known allocators.
	(__alloc_traits::construct, __alloc_traits::destroy): Overload for
	non-standard pointer types.
	(__alloc_traits::_S_always_equal): New trait for use with noexcept.
	(__alloc_traits::_S_nothrow_move): Likewise.
	(__alloc_traits::_S_nothrow_swap): Likewise.

From-SVN: r176077
2011-07-09 13:48:32 +01:00
Jonathan Wakely eece716393 cast.h: Fix typo in include guard.
2011-07-09  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* include/ext/cast.h: Fix typo in include guard.
	* include/ext/pointer.h (_Unqualified_type): Remove redundant
	partial specializations for volatile types. Fix typos in comments.
	(pointer_traits<_Pointer_adaptor<Tp>>::pointer_to): Define.

From-SVN: r176075
2011-07-09 11:28:56 +01:00
Eric Botcazou 0a222ba757 sparc.h (STACK_SAVEAREA_MODE): Move around.
* config/sparc/sparc.h (STACK_SAVEAREA_MODE): Move around.
	(FP_REG_P): Delete.
	(IN_OR_GLOBAL_P): Likewise.

From-SVN: r176074
2011-07-09 10:13:56 +00:00
Jonathan Wakely 4880236e3f re PR libstdc++/49668 ([C++0x] std::thread does not forward its args as rvalues)
2011-07-09  Jonathan Wakely  <jwakely.gcc@gmail.com>

	PR libstdc++/49668
	* include/std/functional (__bind_simple): Define.
	* include/std/future (_Task_setter): Parameterize by type of result
	pointer instead of state object.
	(_S_task_setter): Type deduction helper.
	(_Task_state): Use _S_task_setter and __bind_simple.
	(_Deferred_state, _Async_state): Store call wrapper directly not as
	std::function. Use _S_task_setter and __bind_simple.
	(_S_make_deferred_state, _S_make_async_state): Type deduction helpers.
	(async): Use new functions and __bind_simple.
	* include/std/mutex (call_once): Use __bind_simple.
	* include/std/thread (thread): Likewise. Remove unused headers.
	* src/thread.cc: Add header.
	* testsuite/30_threads/async/49668.cc: New.
	* testsuite/30_threads/call_once/49668.cc: New.
	* testsuite/30_threads/thread/cons/49668.cc: New.
	* testsuite/30_threads/thread/cons/moveable.cc: Remove unused bool.

From-SVN: r176073
2011-07-09 11:13:01 +01:00
Jason Merrill 4063e61bc6 re PR c++/45437 (Loses reference during update)
PR c++/45437
gcc/
	* gimplify.c (goa_stabilize_expr): Handle RHS preevaluation in
	compound assignment.
gcc/c-family/
	* c-omp.c (check_omp_for_incr_expr): Handle preevaluation.
gcc/cp/
	* typeck.c (cp_build_modify_expr): Preevaluate RHS.

From-SVN: r176072
2011-07-08 23:33:54 -04:00
Jason Merrill 2fda8e144a cgraph.c (cgraph_add_to_same_comdat_group): New.
gcc/
	* cgraph.c (cgraph_add_to_same_comdat_group): New.
	* cgraph.h: Declare it.
	* ipa.c (function_and_variable_visibility): Make sure thunks
	have the right visibility.
gcc/cp/
	* method.c (use_thunk): Use cgraph_add_to_same_comdat_group.
	* optimize.c (maybe_clone_body): Likewise.
	* semantics.c (maybe_add_lambda_conv_op): Likewise.

From-SVN: r176071
2011-07-08 23:33:44 -04:00
GCC Administrator e8f8774a90 Daily bump.
From-SVN: r176070
2011-07-09 00:17:50 +00:00
Richard Henderson 965b2557b0 dwarf2cfi: Flush queued saves at the end of the prologue.
There's little point at holding onto these saves indefinitely.

PR bootstrap/49680
        * dwarf2cfi.c (create_cfi_notes): Flush queued saves at the
        end of the prologue.

From-SVN: r176066
2011-07-08 16:48:59 -07:00
Richard Henderson 830f11fee4 dwarf2cfi: Insert notes correctly wrt tablejumps.
PR bootstrap/49680
        * dwarf2cfi.c (dwarf2out_frame_debug): Insert cfi notes after
        any tablejump vector.

From-SVN: r176065
2011-07-08 16:48:53 -07:00
Jakub Jelinek 70db9095ea re PR target/49621 (ICE in trunc_int_for_mode, at explow.c:57)
PR target/49621
	* config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Use
	CONST0_RTX (dest_mode) instead of const0_rtx as second operand
	of NE.
	* config/rs6000/vector.md (vector_select_<mode>,
	vector_select_<mode>_uns): Change second operand of NE to
	CONST0_RTX (<MODE>mode) instead of const0_rtx.
	* config/rs6000/altivec.md (*altivec_vsel<mode>,
	*altivec_vsel<mode>_uns): Expect second operand of NE to be
	zero_constant of the corresponding vector mode.
	* config/rs6000/vsx.md (*vsx_xxsel<mode>, *vsx_xxsel<mode>_uns):
	Likewise.

	* gcc.target/powerpc/altivec-34.c: New test.

From-SVN: r176063
2011-07-08 22:09:58 +02:00
Joseph Myers d6919c1f42 be.po, [...]: Update.
* be.po, ca.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po,
	ja.po, nl.po, ru.po, sv.po, tr.po, uk,po, vi.po, zh_CN.po,
	zh_TW.po: Update.

From-SVN: r176061
2011-07-08 20:29:04 +01:00
Joseph Myers 73c82cf079 be.po, [...]: Update.
* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po,
	nl.po, ru.po, sr.po, sv.po, tr.po, vi.po, zh_CN.po, zh_TW.po:
	Update.

From-SVN: r176059
2011-07-08 20:26:35 +01:00
Sebastian Pop 320be309d0 Only update ChangeLog.graphite.
From-SVN: r176058
2011-07-08 19:15:18 +00:00
Sebastian Pop e92c50201f Remove continue from loop, add one more assert.
2011-07-08  Sebastian Pop  <sebastian.pop@amd.com>

	* graphite-dependences.c (build_alias_set_powerset): Remove
	continue from loop, add one more assert.

From-SVN: r176057
2011-07-08 19:15:11 +00:00
Sebastian Pop 82a551d9ea Only update ChangeLog.graphite.
From-SVN: r176056
2011-07-08 19:15:02 +00:00
Jason Merrill 34bec55606 re PR c++/45603 (crash in "build_addr_func")
PR c++/45603
	* decl.c (expand_static_init): Don't get confused by user
	declaration of __cxa_guard_acquire.

From-SVN: r176054
2011-07-08 13:39:17 -04:00
Georg-Johann Lay 3e4f84847d re PR target/46779 ([avr] wrong code generation for values held in R28/R29)
PR target/46779
	* config/avr/avr.c (avr_hard_regno_mode_ok): Rewrite.
	In particular, allow 8-bit values in r28 and r29.
	(avr_hard_regno_scratch_ok): Disallow any register that might be
	part of the frame pointer.
	(avr_hard_regno_rename_ok): Same.
	(avr_legitimate_address_p): Don't allow SUBREGs.

From-SVN: r176053
2011-07-08 17:38:39 +00:00
Jason Merrill 859f6cb4c6 typeck.c (cp_apply_type_quals_to_decl): Don't check COMPLETE_TYPE_P either.
* typeck.c (cp_apply_type_quals_to_decl): Don't check
	COMPLETE_TYPE_P either.

From-SVN: r176052
2011-07-08 13:37:29 -04:00
Julian Brown 0094f21b61 neon.md (vec_shr_<mode>, [...]): Disable in big-endian mode.
gcc/
	* config/arm/neon.md (vec_shr_<mode>, vec_shl_<mode>): Disable in
	big-endian mode.
	(reduc_splus_<mode>, reduc_uplus_<mode>, reduc_smin_<mode>)
	(reduc_smax_<mode>, reduc_umin_<mode>, reduc_umax_<mode>)
	(neon_vec_unpack<US>_lo_<mode>, neon_vec_unpack<US>_hi_<mode>)
	(vec_unpack<US>_hi_<mode>, vec_unpack<US>_lo_<mode>)
	(neon_vec_<US>mult_lo_<mode>, vec_widen_<US>mult_lo_<mode>)
	(neon_vec_<US>mult_hi_<mode>, vec_widen_<US>mult_hi_<mode>)
	(vec_pack_trunc_<mode>, neon_vec_pack_trunc_<mode>): Disable for Q
	registers in big-endian mode.

	gcc/testsuite/
	* lib/target-supports.exp
	(check_effective_target_arm_little_endian): New.
	(check_effective_target_vect_pack_trunc): Use above.
	(check_effective_target_vect_unpack): Likewise.
	(check_effective_target_vect_element_align): Test
	check_effective_target_arm_vect_no_misalign for ARM.

From-SVN: r176050
2011-07-08 17:30:43 +00:00
Jason Merrill f8501f04ea constexpr-rom.C tweak
From-SVN: r176049
2011-07-08 12:46:28 -04:00
Bernd Schmidt c0a6a1eff6 defaults.h (REG_WORDS_BIG_ENDIAN): Provide a default.
* defaults.h (REG_WORDS_BIG_ENDIAN): Provide a default.
	* doc/tm.texi.in (WORDS_BIG_ENDIAN): Mention REG_WORDS_BIG_ENDIAN.
	(REG_WORDS_BIG_ENDIAN): Document.
	* doc/tm.texi: Regenerate.
	* reload.c (operands_match_p): Take it into account.
	(reload_adjust_reg_for_mode): Likewise.
	* rtlanal.c (subreg_get_info): Likewise.

From-SVN: r176048
2011-07-08 16:21:58 +00:00
Bernd Schmidt 9ae6010158 genattrtab.c (evaluate_eq_attr): Allow an attribute to be defined in terms of another.
* genattrtab.c (evaluate_eq_attr): Allow an attribute to be defined
	in terms of another.
	(write_attr_value): Write a cast if necessary.

From-SVN: r176047
2011-07-08 16:08:13 +00:00
Jason Merrill 329af3c7e9 re PR c++/49673 ([C++0x] const variables initialised with constexpr constructor placed in .data not .rodata)
PR c++/49673
gcc/c-family/
	* c-common.c (c_apply_type_quals_to_decl): Don't check
	TYPE_NEEDS_CONSTRUCTING.
gcc/cp/
	* typeck.c (cp_apply_type_quals_to_decl): Don't check
	TYPE_NEEDS_CONSTRUCTING.

From-SVN: r176045
2011-07-08 10:24:14 -04:00
Richard Guenther b862187a34 fold-const.c (fold_binary_loc): Remove index +p PTR -> PTR +p index folding.
2011-07-08  Richard Guenther  <rguenther@suse.de>

	* fold-const.c (fold_binary_loc): Remove index +p PTR -> PTR +p index
	folding.

From-SVN: r176044
2011-07-08 14:08:17 +00:00
Kai Tietz e8e8c74b49 fold-const.c (fold_truth_andor): Factored out truth_andor label from fold_binary as function.
2011-07-08  Kai Tietz  <ktietz@redhat.com>

        * fold-const.c (fold_truth_andor): Factored out truth_andor
        label from fold_binary as function.
        (fold_binary_loc): Replace truth_andor lable
        by function fold_truth_andor.

From-SVN: r176043
2011-07-08 15:22:52 +02:00
Kirill Yukhin 6c3cb698c5 re PR middle-end/49519 (Revision 175272 miscompiled 447.dealII in SPEC CPU 2006)
Fix PR middle-end/49519.

gcc/

2011-07-08  Kirill Yukhin  <kirill.yukhin@intel.com>

	PR middle-end/49519
	* calls.c (mem_overlaps_already_clobbered_arg_p): Additional
	check if address is stored in register. If so - give up.
	(check_sibcall_argument_overlap_1): Do not perform check of
	overlapping when it is call to address.

gcc/tessuite/

2011-07-08  Kirill Yukhin  <kirill.yukhin@intel.com>

	PR middle-end/49519
	* g++.dg/torture/pr49519.C: New test.

From-SVN: r176042
2011-07-08 06:12:03 -07:00
Georg-Johann Lay 7d8d6d7359 avr.c (output_reload_insisf): Use 'REG_Z+1' instead of magic '31'.
* config/avr/avr.c (output_reload_insisf): Use 'REG_Z+1' instead
	of magic '31'.

From-SVN: r176041
2011-07-08 13:09:07 +00:00
Bernd Schmidt 0d44736e75 optabs.c (expand_binop): Tighten conditions for doubleword expansions.
* optabs.c (expand_binop): Tighten conditions for doubleword
	expansions.
	(widen_bswap): Assert that mode bitsize and precision are the
	same.
	* stor-layout.c (get_best_mode): Skip modes that have lower
	precision than bitsize.
	* recog.c (simplify_while_replacing): Assert that bitsize and
	precision are the same.

From-SVN: r176040
2011-07-08 13:03:38 +00:00
Bernd Schmidt 86cdf39313 rtlanal.c (nonzero_bits1): Don't compare GET_MODE_SIZE against a bitsize.
* rtlanal.c (nonzero_bits1): Don't compare GET_MODE_SIZE against
	a bitsize.

From-SVN: r176039
2011-07-08 13:01:07 +00:00
Bernd Schmidt 69660a7091 optabs.c (expand_binop): Use GET_MODE_PRECISION instead of GET_MODE_BITSIZE where appropriate.
* optabs.c (expand_binop): Use GET_MODE_PRECISION instead of
	GET_MODE_BITSIZE where appropriate.
	(widen_leading, expand_parity, expand_ctz, expand_ffs,
	expand_unop, expand_abs_nojump, expand_one_cmpl_abs_nojump,
	expand_float, expand_fix): Likewise.
	* expr.c (convert_move, convert_modes, expand_expr_real_2,
	expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
	* cfgexpand.c (convert_debug_memory_address, expand_debug_expr):
	Likewise.
	* convert.c (convert_to_integer): Likewise.
	* expmed.c (expand_shift_1): Likewise.

From-SVN: r176038
2011-07-08 12:57:50 +00:00
Rainer Orth 2c50b2c366 Makefile.in (LIBGCOV): Remove.
gcc:
	* Makefile.in (LIBGCOV): Remove.
	(libgcc.mvars): Remove LIBGCOV.
	* libgov.c: Move to ../libgcc.

	libgcc:
	* Makfile.in (LIBGCOV): New variable.
	($(libgcov-objects)): Use $(srcdir) to refer to libgcov.c.
	* libgcov.c: New file.

From-SVN: r176037
2011-07-08 11:43:54 +00:00
Rainer Orth a039d7c2f1 fixed-bit.c, [...]: Move to ../libgcc.
gcc:
	* config/fixed-bit.c, config/fixed-bit.h: Move to ../libgcc.

	libgcc:
	* fixed-bit.c, fixed-bit.h: New files.
	* fixed-obj.mk ($o$(objext), $(o)_s$(objext)): Use $(srcdir) to
	refer to fixed-bit.c.

From-SVN: r176036
2011-07-08 11:18:38 +00:00
Martin Jambor c0d8ec2b23 sra-12.c: Skip dump scan on avr targets.
2011-07-08  Martin Jambor  <mjambor@suse.cz>

testsuite/
	* gcc.dg/tree-ssa/sra-12.c: Skip dump scan on avr targets.

From-SVN: r176035
2011-07-08 12:25:55 +02:00
Rainer Orth 6a6e71449b re PR testsuite/48727 (FAIL: g++.dg/opt/devirt2.C scan-assembler-times xyzzy 2)
PR testsuite/48727
	* g++.dg/opt/devirt2.C: Use specific pattern for sparc*-*-*.

From-SVN: r176034
2011-07-08 10:20:36 +00:00
Martin Jambor e923ef4132 tree-sra.c (analyze_all_variable_accesses): Dump that a struture is too big for total scalarization.
2011-07-08  Martin Jambor  <mjambor@suse.cz>

	* tree-sra.c (analyze_all_variable_accesses): Dump that a struture
	is too big for total scalarization.

From-SVN: r176033
2011-07-08 12:16:51 +02:00
Rainer Orth 00fc1bf6c7 configure.host (abi_baseline_subdir_switch): Describe.
* configure.host (abi_baseline_subdir_switch): Describe.
	Provide default.
	(*-*-solaris2.[89], *-*-solaris2.1[0-9]): Override.
	* acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Substitute
	baseline_subdir_switch.
	* testsuite/Makefile.am (site.exp): Emit it.
	(baseline_subdir): Use it.
	* testsuite/libstdc++-abi/abi.exp: Use it.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.
	* include/Makefile.in: Regenerate.
	* libsupc++/Makefile.in: Regenerate.
	* po/Makefile.in: Regenerate.
	* python/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

From-SVN: r176032
2011-07-08 08:49:57 +00:00
Richard Guenther e3fe54189f re PR tree-optimization/49662 (XFAIL: gcc.dg/graphite/interchange-XX.c, PRE confuses loop interchange)
2011-07-08  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/49662
	* gcc.dg/graphite/interchange-14.c: XFAIL.
	* gcc.dg/graphite/interchange-15.c: Likewise.
	* gcc.dg/graphite/interchange-mvt.c: Likewise.

From-SVN: r176031
2011-07-08 08:42:31 +00:00
GCC Administrator 02af27fbc0 Daily bump.
From-SVN: r176025
2011-07-08 00:17:49 +00:00
Richard Henderson b709e18930 alpha-elf: Disable stabs debugging, and the mips sdb extensions.
In particular, the mips sdb extensions accidentally implied the
irix dwarf2 extensions and restrictions.  Disable stabs because
it's almost certainly untested for years.

        * config/alpha/elf.h (MIPS_DEBUGGING_INFO): Undef.
        (DBX_DEBUGGING_INFO): Undef.

From-SVN: r176021
2011-07-07 17:14:19 -07:00
Richard Henderson 2867fa7cbd Dump NOTE_INSN_CFI notes.
* dwarf2out.c (output_cfi_directive): Export.  Add FILE parameter.
        Handle some opcodes specially for debugging.
        * print-rtl.c: Include dwarf2out.h
        (print_rtx): Handle NOTE_INSN_CFI.
        * Makefile.in (print-rtl.o): Update.

From-SVN: r176020
2011-07-07 17:13:02 -07:00
Richard Henderson 7644b3c7f0 dwarf2: Extract cfi creation to a new pass.
* tree-pass.h (pass_dwarf2_frame): Declare.
        * passes.c (init_optimization_passes): Add it.
        * dwarf2cfi.c (dwarf2out_frame_debug): Make static.
        (create_cfi_notes): Rename from dwarf2out_frame_debug_after_prologue;
        make static, do not call add_cfis_to_fde.
        (dwarf2out_frame_debug_init, dwarf2cfi_function_init,
        dwarf2out_frame_init): Merge into...
        (execute_dwarf2_frame): ... here.  New function.
        (dwarf2out_do_frame, dwarf2out_do_cfi_asm): Make boolean.  Change
        saved_do_cfi_asm to a tri-state variable.
        (gate_dwarf2_frame, pass_dwarf2_frame): New.
        * dwarf2out.c (dwarf2out_begin_prologue): Only allocate the fde
        if it has yet to be done.  Don't call dwarf2cfi_function_init.
        * dwarf2out.h, debug.h: Update decls.
        * final.c (final_start_function): Don't call
        dwarf2out_frame_debug_init or dwarf2out_frame_debug_after_prologue.
        * lto-streamer-in.c (lto_init_eh): Don't call dwarf2out_frame_init.
        * toplev.c (lang_dependent_init): Likewise.

From-SVN: r176019
2011-07-07 17:05:57 -07:00
Richard Henderson a518b99616 dwarf2out: Convert fde_table to a VEC.
Prepare for allocating the FDE for the current function earlier
than dwarf2out_begin_prologue.

        * dwarf2out.c (fde_table, fde_table_allocated, fde_table_in_use,
        FDE_TABLE_INCREMENT): Replace with...
        (fde_vec): ... this, a new vector.
        (current_fde): Remove.  Replace all users with cfun->fde.
        (output_call_frame_info): Use FOR_EACH_VEC_ELT over fde_vec.
        (size_of_aranges, dwarf2out_finish): Likewise.
        (dwarf2out_alloc_current_fde): Break out from ...
        (dwarf2out_begin_prologue): ... here.
        (dwarf2out_frame_init): Remove.
        * dwarf2cfi.c: Update all users of current_fde.
        (dwarf2out_frame_init): Rename from dwarf2cfi_frame_init.
        * dwarf2out.h: Update decls.
        (dw_fde_node): Add fde_index member.
        * function.h (struct function): Add fde member.

From-SVN: r176018
2011-07-07 16:57:26 -07:00
Bernd Schmidt 89e25f9584 dwarf2out: Emit NOTE_INSN_CFI_* both with and without cfi-asm.
This patch is essentially Bernd's 006-cfilabel patch, updated
for all the other changes to dwarf2out.

The patch reduces the difference between the cfi-asm and non-cfi-asm
code paths.  We now emit the CFI notes in all cases.  Later, after we're
done producing the CFI insns we need, another pass over the rtl adds
the necessary labels and set_loc/advance_loc CFIs.  One consequence of
this is that def_cfa_1 can no longer use lookup_cfa, so it just compares
to an old_cfa variable instead.

The major change since Bernd's patch is that all the target-specific
changes are no longer necessary.

        * dwarf2cfi.c (add_cfi): Remove.
        (dwarf2out_cfi_label): Remove force argument.  Only generate the
        label name.
        (add_fde_cfi): Simplify the different code paths.
        (add_cie_cfi): New.
        (old_cfa, old_cfa_remember): New.
        (def_cfa_1, reg_save): Remove label, add for_cie parameter.
        (last_reg_save_label): Remove.
        (dwarf2out_args_size, dwarf2out_stack_adjust, queue_reg_save,
        dwarf2out_frame_debug_def_cfa, dwarf2out_frame_debug_adjust_cfa,
        dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_cfa_register,
        dwarf2out_frame_debug_cfa_expression,
        dwarf2out_frame_debug_cfa_restore,
        dwarf2out_frame_debug_cfa_window_save,
        dwarf2out_frame_debug_expr): Remove label parameter.
        (cfi_label_required_p, add_cfis_to_fde): New.
        (dwarf2out_frame_debug_after_prologue): New.
        (dwarf2cfi_frame_init): Initialize old_cfa.
        (dwarf2out_frame_debug_restore_state): Likewise.
        * dwarf2out.c (dwarf2out_emit_cfi): Only do output for cfi_asm.
        (dwarf2out_switch_text_section): Don't clear dw_fde_current_label here.
        * final.c (final_start_function): Call
        dwarf2out_frame_debug_after_prologue.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r176017
2011-07-07 16:51:16 -07:00
Bernd Schmidt bc5612ed56 dwarf2out: Move insn scanning out of final.c.
This patch is essentially Bernd's 005-scanfirst patch, updated for
the introduction of the dwarf2cfi.c file.

We introduce NOTE_INSN_CFI and NOTE_INSN_CFI_LABEL to hold the dwarf2
info during the bulk of final.  The actual construction of these notes
still happens during final, right at the very beginning of the pass,
via the dwarf2out_frame_debug_init hook.

        * dwarf2cfi.c (cfi_insn): New.
        (dwarf2out_cfi_label): Don't emit cfi label here.
        (add_fde_cfi): Create a NOTE_INSN_CFI.
        (dwarf2out_frame_debug): Setup cfi_insn.
        (dwarf2out_frame_debug_init): Loop over insns creating CFI notes.
        (dwarf2out_cfi_begin_epilogue): Make static.
        (dwarf2out_frame_debug_restore_state): Make static.
        * dwarf2out.c (output_cfi_directive): Make static.
        (dwarf2out_emit_cfi): New.
        * dwarf2out.h: Update.
        * final.c (final): Remove CFI notes.
        (final_scan_insn): Don't call dwarf2out_cfi_begin_epilogue,
        dwarf2out_frame_debug_restore_state, dwarf2out_frame_debug.
        Handle NOTE_INSN_CFI and NOTE_INSN_CFI_LABEL.
        * insn-notes.def (NOTE_INSN_CFI): New.
        (NOTE_INSN_CFI_LABEL): New.
        * rtl.h (union rtunion_def): Add rt_cfi member.
        (XCFI, XCCFI, NOTE_CFI, NOTE_LABEL_NUMBER): New.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r176016
2011-07-07 16:42:41 -07:00
Richard Henderson 647a156710 dwarf2out: Split CFI construction routines into a new file.
Excepting changing some functions from static to extern, this
patch contains code motion only.  The split is not very clean
at this point, but will be refined as CFI construction is turned
into its own proper pass.

        * dwarf2cfi.c: New file.
        * Makefile.in (OBJS): Add it.
        (GTFILES): Add dwarf2cfi.c and dwarf2out.h.
        * gengtype.c (open_base_files): Include dwarf2out.h.
        * coretypes.h (enum var_init_status): Move from ...
        * rtl.h: ... here.
        * dwarf2out.c (saved_do_cfi_asm, dwarf2out_do_frame,
        dwarf2out_do_cfi_asm, cie_cfi_vec, dwarf2out_cfi_label_num,
        expand_builtin_dwarf_sp_column, init_return_column_size,
        expand_builtin_init_dwarf_reg_sizes, new_cfi, add_cfi,
        dwarf2out_cfi_label, emit_cfa_remember, any_cfis_emitted, add_fde_cfi,
        lookup_cfa_1, lookup_cfa, cfa, cfa_store, cfa_remember, args_size,
        old_args_size, cfa_equal_p, def_cfa_1, reg_save, initial_return_save,
        stack_adjust_offset, barrier_args_size, compute_barrier_args_size_1,
        compute_barrier_args_size, dwarf2out_args_size,
        dwarf2out_stack_adjust, dwarf2out_notice_stack_adjust,
        queued_reg_saves, reg_saved_in_data, regs_saved_in_regs,
        compare_reg_or_pc, record_reg_saved_in_reg, last_reg_save_label,
        queue_reg_save, dwarf2out_flush_queued_reg_saves,
        clobbers_queued_reg_save, reg_saved_in, cfa_temp,
        dwarf2out_frame_debug_def_cfa, dwarf2out_frame_debug_adjust_cfa,
        dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_cfa_register,
        dwarf2out_frame_debug_cfa_expression,
        dwarf2out_frame_debug_cfa_restore,
        dwarf2out_frame_debug_cfa_window_save, dwarf2out_frame_debug_expr,
        dwarf2out_frame_debug, dwarf2out_frame_debug_init,
        dwarf2out_cfi_begin_epilogue, dwarf2out_frame_debug_restore_state,
        get_cfa_from_loc_descr): Move to dwarf2cfi.c.
        (dw_cfi_ref, dw_fde_ref, dw_cfi_oprnd_ref, enum dw_cfi_oprnd_type,
        dw_cfi_oprnd, dw_cfi_node, cfi_vec, dw_cfa_location, dw_fde_node,
        dw_val_ref, dw_die_ref, const_dw_die_ref, dw_loc_descr_ref,
        dw_loc_list_ref, enum dw_val_class, dw_vec_const, dw_val_node,
        dw_loc_descr_node): Move to dwarf2out.h.
        (current_fde, output_cfi_directive, build_cfa_loc, get_address_mode,
        mem_loc_descriptor): Export.
        (build_cfa_aligned_loc): Export.  Take CFA as a parameter.
        (dwarf2out_frame_init): Extract CIE generation code to
        dwarf2cfi_frame_init.

From-SVN: r176015
2011-07-07 16:35:22 -07:00
Jason Merrill 0771d9d750 re PR c++/49663 ([C++0x] ICE in lookup_base)
PR c++/49663
	* pt.c (push_deduction_access_scope): Preserve
	processing_template_decl across push_to_top_level.
	And revert:
	* class.c (pushclass): Accept NULL argument.
	(popclass): Deal with popping null class.
	* pt.c (push_access_scope, pop_access_scope): Use them rather than
	push_to_top_level/pop_from_top_level.
	* name-lookup.c (lookup_name_real_1): Check current_class_type.

From-SVN: r176013
2011-07-07 17:53:58 -04:00
Mikael Morin ceeb79a48e re PR fortran/49648 (ICE(segfault) with MATMUL and function-result actual argument)
2011-07-07  Mikael Morin  <mikael.morin@sfr.fr>

	PR fortran/49648
	* gfortran.dg/result_in_spec_4.f90: New test.

From-SVN: r176012
2011-07-07 21:03:25 +00:00
Mikael Morin e3d748dd0e re PR fortran/49648 (ICE(segfault) with MATMUL and function-result actual argument)
2011-07-07  Mikael Morin  <mikael.morin@sfr.fr>

	PR fortran/49648
	* resolve.c (resolve_symbol): Force resolution of function result's
	array specification.

From-SVN: r176011
2011-07-07 20:58:16 +00:00