Commit Graph

113455 Commits

Author SHA1 Message Date
Paolo Carlini f3670c001c 2011-11-21 Paolo Carlini <paolo.carlini@oracle.com>
* Fix last ChangeLog entry.

From-SVN: r181558
2011-11-21 11:22:37 +00:00
Daniel Krugler 5db25ab107 re PR libstdc++/51185 ([C++0x] false-positive results of std::is_constructible)
2011-11-21  Daniel Krugler  <daniel.kruegler@googlemail.com>

	PR libstdc++/51185
	* include/std/type_traits (__is_base_to_derived_ref,
	__is_lvalue_to_rvalue_ref): Fix.
	* testsuite/20_util/is_constructible/51185.cc: New.
	* testsuite/20_util/is_constructible/value-2.cc: Extend.

From-SVN: r181557
2011-11-21 11:21:13 +00:00
Paolo Carlini bbee335668 2011-11-21 Paolo Carlini <paolo.carlini@oracle.com>
* Fix last ChangeLog entry.

From-SVN: r181556
2011-11-21 10:48:53 +00:00
Paolo Carlini a7cd7b6088 tuple (__conv_types, [...]): Remove.
2011-11-21  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/std/tuple (__conv_types, __one_by_one_convertible,
	__all_convertible): Remove.
	(tuple<>::tuple(_UElements&&...),
	tuple<>::tuple(const tuple<_UElements...>&),
	tuple<>::tuple(tuple<_UElements...>&&)): Remove wa for c++/48322.

From-SVN: r181555
2011-11-21 10:47:37 +00:00
Georg-Johann Lay 5436efaa0f avr.h (struct base_arch_s): Add field sfr_offset.
* config/avr/avr.h (struct base_arch_s): Add field sfr_offset.
	* config/avr/avr-devices.c: Ditto. And initialize it.
	* config/avr/avr-c.c (avr_cpu_cpp_builtins): New built-in define
	__AVR_SFR_OFFSET__.
	* config/avr/avr-protos.h (out_movqi_r_mr, out_movqi_mr_r): Remove.
	(out_movhi_r_mr, out_movhi_mr_r): Remove.
	(out_movsi_r_mr, out_movsi_mr_r): Remove.
	* config/avr/avr.md (*cbi, *sbi): Use %i instead of %m-0x20.
	(*insv.io, *insv.not.io): Ditto.
	* config/avr/avr.c (out_movsi_r_mr, out_movsi_mr_r): Make static.
	(print_operand): Implement "%i" to print address as I/O address.
	(output_movqi): Clean up call of out_movqi_mr_r.
	(output_movhi): Clean up call of out_movhi_mr_r.
	(avr_file_start): Use avr_current_arch->sfr_offset instead of
	magic -0x20. Use TMP_REGNO, ZERO_REGNO instead of 0, 1.
	(avr_out_sbxx_branch): Use %i instead of %m-0x20.
	(out_movqi_r_mr, out_movqi_mr_r): Ditto. And make static.
	(out_movhi_r_mr, out_movhi_mr_r): Ditto. And use avr_asm_len.
	(out_shift_with_cnt): Clean up code: Use avr_asm_len.
	(output_movsisf): Use output_reload_insisf for all CONSTANT_P sources.
	(avr_out_movpsi): USE avr_out_reload_inpsi for all CONSTANT_P sources.
	Clean up call of avr_out_store_psi.
	(output_reload_in_const): Don't cut symbols longer than 2 bytes.
	(output_reload_insisf): Filter CONST_INT_P or CONST_DOUBLE_P to
	try if setting pre-cleared register is advantageous.
	(avr_out_plus_1): Use gen_int_mode instead of GEN_INT.

From-SVN: r181552
2011-11-21 09:00:26 +00:00
Georg-Johann Lay 989bdb7461 re PR target/49313 (Inefficient libgcc implementations for avr)
PR target/49313
	* config/avr/t-avr (LIB2FUNCS_EXCLUDE): Add _moddi3, _umoddi3.
	(LIB1ASMFUNCS): Add _divdi3, _udivdi3, _udivmod64, _negdi2.
	* config/avr/lib1funcs.S (wmov): New assembler macro.
	(__umoddi3, __udivdi3, __udivdi3_umoddi3): New functions.
	(__moddi3, __divdi3, __divdi3_moddi3): New functions.
	(__udivmod64): New function.
	(__negdi2): New function.

From-SVN: r181551
2011-11-21 08:56:44 +00:00
Gerald Pfeifer 515a0cfc80 * config.host (*-*-freebsd[12], *-*-freebsd[12].*,
*-*-freebsd*aout*): Remove.

From-SVN: r181550
2011-11-21 02:29:09 +00:00
Joey Ye e5fe4319e7 expr.c (expand_expr_real_1): Correctly handle strict volatile bitfield loads smaller than mode size.
2011-11-20  Joey Ye  <joey.ye@arm.com>

	* expr.c (expand_expr_real_1): Correctly handle strict volatile
	bitfield loads smaller than mode size.

testsuite:

	* gcc.dg/volatile-bitfields-1.c: New.

From-SVN: r181549
2011-11-21 02:16:12 +00:00
Jason Merrill 25a9676197 * pt.c (tsubst_pack_expansion): Fix SFINAE.
From-SVN: r181548
2011-11-20 21:05:03 -05:00
Jason Merrill c67dd25689 re PR c++/48322 ([C++0x] Plural variadic parameter packs are not expanded well)
PR c++/48322
gcc/cp/
	* cp-tree.h (PACK_EXPANSION_EXTRA_ARGS): New.
	* cp-tree.def (EXPR_PACK_EXPANSION): Add an operand for it.
	* pt.c (tsubst_pack_expansion): Set and use it.
	(iterative_hash_template_arg): Hash it.
	(template_args_equal): Compare it.
	(comp_template_args_with_info): Handle nulls.
	* tree.c (cp_walk_subtrees): Walk it.
	* typeck.c (structural_comptypes): Compare it.
	* ptree.c (cxx_print_type): Print it.
libstdc++-v3/
	* include/std/tuple (tuple(_UElements&&...)): Fix SFINAE.

From-SVN: r181547
2011-11-20 21:04:54 -05:00
Jason Merrill 80ca43a314 pt.c (type_unification_real): Set input_location during default arg instantiation.
* pt.c (type_unification_real): Set input_location
	during default arg instantiation.

From-SVN: r181546
2011-11-20 21:04:38 -05:00
Gerald Pfeifer 6a4b4d3179 update_web_docs_svn: Make $DOCSDIR group writable after creating it.
* update_web_docs_svn: Make $DOCSDIR group writable after
	creating it.

From-SVN: r181545
2011-11-21 01:16:24 +00:00
Hans-Peter Nilsson 0115d17f16 static-object.mk (c_flags-$o): Save c_flags.
* static-object.mk (c_flags-$o): Save c_flags.
	($(base)$(objext)): Use it.

From-SVN: r181544
2011-11-21 00:41:12 +00:00
GCC Administrator a0a49ff5a3 Daily bump.
From-SVN: r181543
2011-11-21 00:18:27 +00:00
Richard Henderson 722d8b7b38 mips: Install the __sync libfuncs for mips16
* config/mips/mips.c (mips_init_libfuncs): Call init_sync_libfuncs.

From-SVN: r181539
2011-11-20 15:16:30 -08:00
Paolo Carlini fcb13a10e4 re PR c++/51230 (Broken diagnostic: 'template_parm_index' not supported by dump_type)
/cp
2011-11-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51230
	* pt.c (unify_inconsistency): Handle non-type parameters better.
	* error.c (dump_expr): Handle TEMPLATE_TEMPLATE_PARM.

/cp
2011-11-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51230
	* g++.dg/template/error46.C: New.

From-SVN: r181538
2011-11-20 22:37:54 +00:00
Uros Bizjak fd9ee5972e re PR target/51235 (ICE: in extract_insn, at recog.c:2137 (unrecognizable insn) with -O -ftree-vectorize -mavx2 -mxop)
PR target/51235
	* config/i386/i386.c (ix86_expand_vcond): Generate TARGET_XOP
	patterns for supported mode only.

	PR target/51236
	* config/i386/i386.c (ix86_expand_builtin)
	<IX86_BUILTIN_GATHERALTSIV4DI>: Use CODE_FOR_avx2_gathersiv4di.

testsuite/ChangeLog:

	PR target/51235
	* gcc.target/i386/pr51235.c: New test.

	PR target/51236
	* gcc.target/i386/pr51236.c: New test.

From-SVN: r181537
2011-11-20 23:26:14 +01:00
Jonathan Wakely 215c6c972d binders.h: Fix examples in doxygen comments and suggest using std::bind instead.
* include/backward/binders.h: Fix examples in doxygen comments and
	suggest using std::bind instead.

From-SVN: r181535
2011-11-20 21:14:56 +00:00
Jonathan Wakely 0c1c870b00 Fix grammar in ChangeLog entry.
From-SVN: r181534
2011-11-20 20:21:51 +00:00
Jonathan Wakely c37e667527 * doc/xml/manual/status_cxx2011.xml: Fix docbook markup.
From-SVN: r181533
2011-11-20 20:05:58 +00:00
Jonathan Wakely 062a902517 appendix_contributing.xml: Do not use "here" as link text.
* doc/xml/manual/appendix_contributing.xml: Do not use "here" as link
	text.
	* doc/xml/faq.xml: Likewise. Do not request standard library issues
	to be reported to the libstdc++ mailing list.
	* doc/xml/manual/status_cxx2011.xml: Document implementation-defined
	behaviour.
	* doc/xml/manual/status_cxxtr1.xml: Likewise.
	* doc/xml/manual/utilities.xml: Fix grammar, probably caused by a
	global search and replace of "part" by "chapter".
	* doc/xml/manual/shared_ptr.xml: Remove outdated information.
	* doc/xml/manual/messages.xml: Be more specific about systems where
	using 'int' for catalog handle is not a problem, mentioned LWG issue.

From-SVN: r181532
2011-11-20 19:56:48 +00:00
Uros Bizjak aa198500fe i386.md (UNSPEC_MOVNTI): Remove.
* config/i386/i386.md (UNSPEC_MOVNTI): Remove.
	(UNSPEC_MOVNTQ): New unspec.
	* config/i386/mmx.md (sse_movntq): Rename from sse_movntdi.
	Use UNSPEC_MOVNTQ instead of UNSPEC_MOVNT.
	* config/i386/sse.md (sse2_movnti<mode>): Use UNSPEC_MOVNT instead of
	UNSPEC_MOVNTI.
	(STORENT_MODE): Add DI and V4DI modes.

From-SVN: r181531
2011-11-20 20:17:08 +01:00
Arnaud Charlet 03e1048e9f [multiple changes]
2011-11-20  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb, exp_util.adb: Minor reformatting

2011-11-20  Eric Botcazou  <ebotcazou@adacore.com>

	* sinfo.ads (Reference): Document that it is OK to set
	Is_Known_Non_Null on a temporary initialized to a N_Reference
	node.

2011-11-20  Matthew Heaney  <heaney@adacore.com>

	* a-cbdlli.adb, a-cfdlli.adb (Move): Set Last component to 0
	for Source list.

From-SVN: r181530
2011-11-20 12:44:38 +01:00
Eric Botcazou 74cab21a4b exp_ch6.adb (Make_Build_In_Place_Call_In_Assignment): Declare NEW_EXPR local variable and attach the temporary to it.
2011-11-20  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Assignment):
	Declare NEW_EXPR local variable and attach the
	temporary to it.  Set Is_Known_Non_Null on the temporary.
	(Make_Build_In_Place_Call_In_Object_Declaration): Likewise.
	* exp_util.adb (Remove_Side_Effects): Set Is_Known_Non_Null on
	the temporary created to hold the 'Reference of the expression,
	if any.
	* checks.adb (Install_Null_Excluding_Check): Bail out for the
	Get_Current_Excep.all.all idiom generated by the expander.

From-SVN: r181529
2011-11-20 12:41:57 +01:00
Eric Botcazou 088b91c76f trans.c (struct language_function): Add GNAT_RET.
* gcc-interface/trans.c (struct language_function): Add GNAT_RET.
	(f_gnat_ret): New macro.
	(struct nrv_data): Add GNAT_RET.
	(finalize_nrv_unc_r): New helper function.
	(finalize_nrv): Add GNAT_RET parameter.  Copy it into DATA.  If the
	function returns unconstrained, use finalize_nrv_unc_r as callback.
	(return_value_ok_for_nrv_p): Test the alignment of RET_OBJ only if
	RET_OBJ is non-null.
	(Subprogram_Body_to_gnu): Pass GNAT_RET to finalize_nrv.
	(gnat_to_gnu) <N_Return_Statement>: In the return-unconstrained case,
	if optimization is enabled, record candidates for the Named Return
	Value optimization.

From-SVN: r181528
2011-11-20 10:29:22 +00:00
Eric Botcazou 0d24bf7601 trans.c (Subprogram_Body_to_gnu): Add comment.
* gcc-interface/trans.c (Subprogram_Body_to_gnu): Add comment.
	(gnat_to_gnu) <N_Return_Statement>: Add 'else' to avoid doing a useless
	test.  Tweak default case.
	<N_Goto_Statement>: Use better formatting.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Use INIT_EXPR instead of
	MODIFY_EXPR to initialize the storage.
	(build_allocator): Likewise.

From-SVN: r181527
2011-11-20 10:16:48 +00:00
Eric Botcazou b1a785fb5e decl.c (gnat_to_gnu_entity): Adjust call to components_to_record.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Adjust
	call to components_to_record.
	(components_to_record): Add FIRST_FREE_POS parameter.  For the variant
	part, reuse enclosing union even if there is a representation clause
	on the Unchecked_Union.  If there is a variant part, compute the new
	first free position, if any.  Adjust call to self.  Use a single field
	directly only if it hasn't got a representation clause or is placed at
	offset zero.  Create the variant part at offset 0 if all the fields
	down to this level have a rep clause.  Do not chain the variant part
	immediately and adjust downstream.
	Do not test ALL_REP before moving the fields without rep clause to the
	previous level.  Call create_rep_part to create the REP part and force
	a minimum size on it if necessary.  Do not chain it immediately.
	Create a fake REP part if there are fields without rep clause that need
	to be laid out starting from FIRST_FREE_POS.
	At the end, chain the REP part and then the variant part.
	(create_rep_part): New function.
	(get_rep_part): Minor tweak.
	* gcc-interface/utils.c (tree_code_for_record_type): Minor tweak.

From-SVN: r181526
2011-11-20 10:03:11 +00:00
Nathan Sidwell 4076011132 fixup trunkated changelog entry
From-SVN: r181525
2011-11-20 09:19:21 +00:00
Nathan Sidwell 89b0c30334 re PR gcov-profile/51113 (rev. 181105 causes Firefox profiledbuild failure)
PR gcov-profile/51113
	* coverage.c (build_var): Propagate visibility for public decls.

	testsuite/
	* gcc.misc-tests/gcov-13.c: Check gcovpart-13b coverage
	* gcc.misc-tests/gcov-16.c: New.
	* gcc.misc-tests/gcov-17.c: New.
	* g++.dg/gcov/gcov-8.C: New.
	* g++.dg/gcov/gcov-9.C: New.
	* g++.dg/gcov/gcov-10.C: New.

From-SVN: r181524
2011-11-20 09:09:34 +00:00
Dodji Seketeli fcb36e7363 PR c++/51194 - ICE with invalid alias template
gcc/cp/

	PR c++/51194
	* pt.c (lookup_template_class_1): Go out early if the type of the
	template is error_mark_node.

gcc/testsuite/

	PR c++/51194
	* g++.dg/cpp0x/alias-decl-15.C: New test.

From-SVN: r181523
2011-11-20 08:10:24 +01:00
GCC Administrator 417c27ab30 Daily bump.
From-SVN: r181521
2011-11-20 00:18:50 +00:00
Paolo Carlini 3afeafbce4 re PR c++/51216 (ICE with statement expression)
/cp
2011-11-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51216
	* semantics.c (potential_constant_expression_1): Handle IF_STMT,
	DO_STMT, FOR_STMT, and WHILE_STMT.

/testsuite
2011-11-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51216
	* g++.dg/cpp0x/pr51216.C: New.

From-SVN: r181517
2011-11-19 23:17:12 +00:00
Eric Botcazou b168ced903 re PR rtl-optimization/51187 (miscompilation of genrecog.c at -O2 for --target=avr)
PR rtl-optimization/51187
	* reorg.c (relax_delay_slots): Do not consider a jump useless if there
	is a barrier between the jump and its target label.

From-SVN: r181513
2011-11-19 20:36:43 +00:00
Patrick Marlier 2e85d5e290 re PR middle-end/51211 (ICE: SIGSEGV in execute_tm_mark (trans-mem.c:2242) with -fgnu-tm -O -freorder-blocks -ftracer --param hot-bb-frequency-fraction=1 and __transaction_atomic)
PR middle-end/51211
        * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.

From-SVN: r181512
2011-11-19 11:29:18 -08:00
Eric Botcazou 6f83092f55 * expmed.c (store_bit_field_1): Revert bogus formatting change.
From-SVN: r181511
2011-11-19 18:20:36 +00:00
Eric Botcazou a6b7e72326 Fix minor issues
From-SVN: r181509
2011-11-19 16:24:22 +00:00
Richard Earnshaw 78811dd3b7 re PR target/50493 (ICE in neon_disambiguate_copy, at config/arm/arm.c:20388)
PR target/50493
* arm.c (neon_disambiguate_copy): Correctly handle partial overlap
of src and dest operands.

From-SVN: r181508
2011-11-19 13:47:35 +00:00
Iain Sandoe 40353fb3aa darwin.h (ASM_DEBUG_SPEC): New.
gcc:

	* config/darwin.h (ASM_DEBUG_SPEC): New.
	* config/darwin9.h (ASM_DEBUG_SPEC): New.

From-SVN: r181507
2011-11-19 12:21:08 +00:00
Paolo Carlini fc09e5b6bd bitset (operator[](size_t) const): Declare constexpr.
2011-11-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/debug/bitset (operator[](size_t) const): Declare constexpr.
	* include/profile/bitset: Likewise.
	* testsuite/23_containers/bitset/operations/constexpr.cc: Split out
	non portable bits to...
	* testsuite/23_containers/bitset/operations/constexpr-2.cc: ... here.

From-SVN: r181506
2011-11-19 11:50:44 +00:00
Tobias Burnus cf651ca2e5 re PR fortran/51207 ([OOP] Mark __def_init_... as FL_PARAMETER)
2011-11-19  Tobias Burnus  <burnus@net-b.de>

        PR fortran/51207
        * class.c (gfc_find_derived_vtab): Mark __def_init as PARAMETER
        and hence as TREE_READONLY; add subroutine attribute to
        __copy_ procedure.

        PR fortran/50640
        * trans.h (GFC_DECL_PUSH_TOPLEVEL): New DECL_LANG_FLAG_7.
        * trans-decl.c (gfc_get_symbol_decl): Mark __def_init and vtab
        as GFC_DECL_PUSH_TOPLEVEL.
        (gfc_generate_function_code): If GFC_DECL_PUSH_TOPLEVEL, push it there.
        (build_function_decl): Push __copy_ procedure to the toplevel.

From-SVN: r181505
2011-11-19 10:26:33 +01:00
Jan Hubicka ea5cbe6161 i386.c (atom_cost): Disable SSE loop until alignment issues are fixed.
* config/i386/i386.c (atom_cost): Disable SSE loop until alignment
	issues are fixed.

From-SVN: r181503
2011-11-19 01:34:55 +00:00
GCC Administrator b262d797e1 Daily bump.
From-SVN: r181501
2011-11-19 00:18:48 +00:00
Joseph Myers afd87d51e2 * gcc.dg/cpp/assert4.c: Test __linux__, not __gnu_linux__.
From-SVN: r181496
2011-11-18 22:26:47 +00:00
Steve Ellcey 93aeb62b9e Makefile.in (c_flags): Set to -fno-exceptions to build libunwind.
2011-11-18  Steve Ellcey  <sje@cup.hp.com>

	* Makefile.in (c_flags): Set to -fno-exceptions to build libunwind.

From-SVN: r181495
2011-11-18 22:26:44 +00:00
Anatoly Sokolov 2283c41652 cris.c (cris_function_value_regno_p): Make static.
* config/cris/cris.c (cris_function_value_regno_p): Make static.
	(TARGET_FUNCTION_VALUE_REGNO_P): Define.
	* config/cris/cris.h (FUNCTION_VALUE_REGNO_P): Remove.
	* config/cris/cris-protos.h (cris_function_value_regno_p): Remove.

From-SVN: r181493
2011-11-19 01:23:08 +04:00
Fabien Chêne e5df9bfc89 re PR c++/51188 (invalid static_cast from type 'XBase' to type 'int')
gcc/testsuite/ChangeLog

2011-11-18  Fabien Chene  <fabien@gcc.gnu.org>

	PR c++/51188
	* g++.dg/lookup/using46.C: New.
	* g++.dg/lookup/using47.C: New.
	* g++.dg/lookup/using48.C: New.
	* g++.dg/lookup/using49.C: New.
	* g++.dg/lookup/using50.C: New.

gcc/cp/ChangeLog

2011-11-18  Fabien Chene  <fabien@gcc.gnu.org>

	PR c++/51188
	* search.c (lookup_field_1): Handle USING_DECLs for the storted
	case.

From-SVN: r181492
2011-11-18 21:32:04 +01:00
H.J. Lu f32c951e2c Add _mm_stream_si64.
2011-11-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/33944
	* doc/extend.texi: Document __builtin_ia32_movnti64.

	* config/i386/emmintrin.h (_mm_stream_si64): New.

	* config/i386/i386-builtin-types.def: Add VOID_FTYPE_PLONGLONG_LONGLONG.

	* config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTI64.
	(bdesc_special_args): Update __builtin_ia32_movnti.  Add
	__builtin_ia32_movnti64.
	(ix86_expand_special_args_builtin): Handle
	VOID_FTYPE_PLONGLONG_LONGLONG.

	* config/i386/i386.md (UNSPEC_MOVNTI): New.

	* config/i386/sse.md (sse2_movntsi): Renamed to ...
	(sse2_movnti<mode>): This.

From-SVN: r181491
2011-11-18 11:02:45 -08:00
Fabien Chêne 52e4e221bd re PR c++/51141 (rev181359 causes Chromium build failure)
gcc/testsuite/ChangeLog

2011-11-18  Fabien Chene  <fabien@gcc.gnu.org>

	PR c++/51141
	* g++.dg/lookup/using46.C: New.
	* g++.dg/lookup/using47.C: New.
	* g++.dg/lookup/using48.C: New.
	* g++.dg/lookup/using49.C: New.
	* g++.dg/lookup/using50.C: New.

gcc/cp/ChangeLog

2011-11-18  Fabien Chene  <fabien@gcc.gnu.org>

	PR c++/51141
	* search.c (lookup_field_1): Handle USING_DECLs for the storted
	case.

From-SVN: r181490
2011-11-18 19:44:23 +01:00
Ulrich Weigand 4a0051e4db pr44707.c: Do not assume assembler supports /* ...
* gcc.c-torture/compile/pr44707.c: Do not assume assembler
	supports /* ... */ comments.

From-SVN: r181489
2011-11-18 18:17:05 +00:00
Georg-Johann Lay 7bc6df2ca1 re PR target/49868 (Implement named address space to place/access data in flash memory)
gcc/
	PR target/49868
	* config/avr/avr.h (base_arch_s): Add field n_segments.
	(ADDR_SPACE_PGM1, ADDR_SPACE_PGM2, ADDR_SPACE_PGM3,
	ADDR_SPACE_PGM4, ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): New address spaces.
	(AVR_HAVE_ELPM, AVR_HAVE_ELPMX): New defines.
	(INIT_EXPANDERS): New define.
	* config/avr/avr-protos.h (avr_mem_pgmx_p): New.
	(avr_init_expanders): New.
	(avr_emit_movmemhi, avr_out_movmem): New.
	(avr_xload_libgcc_p): New.
	* config/avr/avr-c.c (avr_register_target_pragmas): Register
	address spaces __pgm1, __pgm2,  __pgm3,  __pgm4  __pgm5,  __pgmx.
	(avr_cpu_cpp_builtins): Add built-in defines __PGM1,
	__PGM2, __PGM3, __PGM4, __PGM5, __PGMX.
	* config/avr/avr-devices.c (avr_arch_types): Set field n_segments.

	* config/avr/avr.c (AVR_SECTION_PROGMEM): Change define to cover
	3 bits instead of just 1.
	(xstring_empty, xstring_e, rampz_rtx): New static GTYed variables.
	(progmem_section): Change from section to array of sections.
	(progmem_section_prefix): New static variable.
	(avr_file_start): Print set for __RAMPZ__
	(avr_option_override): Move initialization of RTXes from here...
	(avr_init_expanders): ...to this new function.
	(avr_pgm_segment): New static function.
	(avr_decl_pgm_p): Handle error_mark_node.
	(avr_mem_pgmx_p, avr_decl_pgmx_p): New static functions.
	(avr_out_xload,	avr_find_unused_d_reg): New static functions.
	(expand_prologue, expand_epilogue): Use rampz_rtx.
	(print_operand): Hande CONST_STRING.
	(avr_xload_libgcc_p): New static function.
	(avr_out_lpm_no_lpmx, avr_out_lpm): Handle ELPM.
	(avr_progmem_p): Return 2 for 24-bit flash address space.
	(avr_out_sbxx_branch): Clean-up code from ASn macros.
	(out_movqi_r_mr, out_movqi_mr_r): Ditto. And recognize RAMPZ's
	address and print symbolically.
	(avr_asm_named_section, avr_section_type_flags,
	avr_encode_section_info, avr_asm_select_section,
	avr_addr_space_address_mode, avr_addr_space_pointer_mode,
	avr_addr_space_legitimate_address_p, avr_addr_space_convert,
	avr_addr_space_legitimize_address): Handle new address spaces.
	(avr_output_progmem_section_asm_op): New static function.
	(avr_asm_init_sections): Initialize progmem_section[].
	(adjust_insn_length): Handle ADJUST_LEN_XLOAD, ADJUST_LEN_MOVMEM.
	(avr_const_address_lo16): New static function.
	(avr_assemble_integer): Use it to handle 3-byte integers.
	(avr_emit_movmemhi, avr_out_movmem): New functions.
	
	* config/avr/predicates.md (nox_general_operand): Handle new
	address spaces.
	* config/avr/avr.md (unspec): Add UNSPEC_MOVMEM.
	(adjust_len): Add xload, movmem.
	(SP_ADDR): New define_constants.
	(isa): Add "lpm", "lpmx", "elpm", "elpmx".
	(enabled): Handle them.
	(load<mode>_libgcc): New expander.
	(*load.<mode>.libgcc): Rename to load_<mode>_libgcc.
	(xload8_A, xload<mode>_A): New insn-and-splits.
	(xload_8, xload_<mode>_libgcc, xload_<mode>, loadmem_elpm): New insns.
	(mov<mode>): Handle new address spaces.
	(movmemhi): Rewrite using avr_emit_movmemhi.
	(MOVMEM_r_d): New mode attribute.
	(movmem_<mode>, movmem_qi_elpm): New insns.
	(setmemhi, *clrmemqi, *clrmemhi, strlenhi, *strlenhi): Unquote
	C-code.  Use label instead of hard-coded instrunction lengths.
	
libgcc/
	PR target/49868
	* config/avr/t-avr (LIB1ASMFUNCS): Add _xload_2 _xload_3 _xload_4.
	* config/avr/lib1funcs.S (__xload_2, __xload_3, __xload_4):
	New functions.

From-SVN: r181482
2011-11-18 16:44:00 +00:00