1. 06 Nov, 2012 40 commits
    • l_fma_float_?.c: Update. · 22458c5a
      
      	* gcc.target/i386/l_fma_float_?.c: Update.
      	* gcc.target/i386/l_fma_double_?.c: Update.
      
      	* tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound,
      	vect_do_peeling_for_alignment): Fix loop bound computation.
      	* tree-vect-loop.c (vect_transform_loop): Maintain loop bounds.
      
      From-SVN: r193241
      Jan Hubicka committed
    • Makefile.in (osconstool): Revert previous change, still needed after all. · c8fef899
      	* Makefile.in (osconstool): Revert previous change, still needed
      	after all. Add call to copy-s-oscons target.
      
      From-SVN: r193240
      Arnaud Charlet committed
    • * gcc-interface/Makefile.in (copy-s-oscons): New target. · bd9d53f3
      From-SVN: r193239
      Arnaud Charlet committed
    • [multiple changes] · 015bee83
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* err_vars.ads, atree.ads: Minor reformatting.
      
      2012-11-06  Arnaud Charlet  <charlet@adacore.com>
      
      	* gcc-interface/Make-lang.in: Update dependencies.
      	* gcc-interface/Makefile.in: Add runtime pairs for Android.
      	Rework handling of s-oscons.ads.
      	* s-osinte-android.ads, s-osinte-android.adb: New files.
      
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* gcc-interface/trans.c (gnat_to_gnu): For N_Real_Literal, create the
      	binary representation of vax floats.
      
      From-SVN: r193238
      Arnaud Charlet committed
    • * Makefile.in (osconstool): Removed, no longer needed. · 540d7a77
      From-SVN: r193237
      Arnaud Charlet committed
    • re PR target/54089 ([SH] Refactor shift patterns) · 0f9a3fd3
      	PR target/54089
      	* config/sh/sh.c (and_xor_ior_costs, addsubcosts): Double the costs for
      	ops larger than SImode.
      	* config/sh/sh.md (rotcl, *rotcl): New insns and splits.
      	(ashldi3_k): Convert to insn_and_split and use new rotcl insn.
      
      	PR target/54089
      	* gcc.target/sh/pr54089-8.c: New.
      	* gcc.target/sh/pr54089-9.c: New.
      
      From-SVN: r193236
      Oleg Endo committed
    • [multiple changes] · ee2ba856
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Fix thinko
      	in previous commit.
      
      2012-11-06  Jose Ruiz  <ruiz@adacore.com>
      
      	* ali.adb (Scan_ALI): Fix parsing mechanism for -fstack-check.
      
      2012-11-06  Thomas Quinot  <quinot@adacore.com>
      
      	* atree.adb, atree.ads, einfo.adb, errout.adb, errout.ads, erroutc.adb,
      	erroutc.ads, errutil.adb, errutil.ads, err_vars.ads, expander.adb,
      	exp_ch13.adb, exp_ch2.adb, exp_ch6.adb, exp_dist.adb, fe.h,
      	fmap.adb, fmap.ads, gprep.adb, makeutl.adb, osint.adb, osint.ads,
      	par_sco.adb, prepcomp.adb, prj-part.adb, prj-proc.adb, scng.adb,
      	sdefault.ads, sem_ch10.adb, sem_ch13.adb, sem_ch2.adb, sem_ch3.adb,
      	sem_ch4.adb, sem_ch5.adb, sem_dim.adb, sem_elab.adb, sem_eval.adb,
      	sem_intr.adb, sem_prag.adb, sem_type.adb, sem_warn.adb, stylesw.adb,
      	stylesw.ads, targparm.adb, targparm.ads (Cascaded_Error): Rename to
      	more descriptive name 'Check_Error_Detected'. Add calls to
      	Check_Error_Detected at places where semantic analysis is abandoned
      	assuming a previously detected error.
      
      From-SVN: r193235
      Arnaud Charlet committed
    • [multiple changes] · d8192289
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* exp_ch4.adb: Minor comment change.
      
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* gnat_ugn.texi: Extensive revision of documentation of overflow
      	checking.
      	* vms_data.ads: Overflow check numbers must be in range 1-3,
      	not 0-3.
      
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Emit a
      	warning if pragma Priority is used in presence of an interrupt
      	handler.
      
      From-SVN: r193234
      Arnaud Charlet committed
    • checks.ads, [...]: Minor changes throughout for new overflow checking. · a7f1b24f
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* checks.ads, checks.adb, exp_ch4.adb: Minor changes throughout for
      	new overflow checking.
      	* exp_util.adb (Insert_Actions): Remove special casing of
      	Overflow_Check.
      	* gnat1drv.adb (Adjust_Global_Switches): Fixes for new handling
      	of overflow checks.
      	* sem.adb (Analyze): Remove special casing of Overflow_Check
      	(Analyze_List): ditto.
      	* sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Remove
      	SUPPRESSED and change CHECKED to STRICT.
      	* sem_res.adb (Analyze_And_Resolve): No longer treat
      	Overflow_Check specially.
      	(Preanalyze_And_Resolve): ditto.
      	(Resolve): ditto.
      	* snames.ads-tmpl: Replace Name_Checked by Name_Strict.
      	* switch-c.adb (Get_Overflow_Mode): Eliminate 0 setting,
      	CHECKED => STRICT.
      	* types.ads (Overflow_Check_Type): Remove Suppressed, change
      	Checked to Strict (Suppress_Record): Overflow check controlled
      	by Suppress array.
      
      From-SVN: r193233
      Robert Dewar committed
    • atomic_base.h: Don't include <cstddef>, use nullptr. · c4ae9877
      2012-11-06  Paolo Carlini  <paolo.carlini@oracle.com>
        
      	* include/bits/atomic_base.h: Don't include <cstddef>, use nullptr.
      	* include/std/atomic: Likewise.
      	* include/tr2/dynamic_bitset: Likewise.
      
      	* libsupc++/vec.cc (compute_size(std::size_t, std::size_t,
      	std::size_t)): Fix for -fno-exceptions.
      
      From-SVN: r193232
      Paolo Carlini committed
    • sem_res.adb (Preanalyze_And_Resolve): In Alfa mode do not disable checks... · 1115dd7e
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_res.adb (Preanalyze_And_Resolve): In Alfa mode do not
      	disable checks, so that flags can be properly set on expressions
      	that are not further expanded.
      
      From-SVN: r193231
      Ed Schonberg committed
    • exp_attr.adb, [...]: Minor reformatting. · 97ce3a14
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* exp_attr.adb, sem_attr.adb: Minor reformatting.
      
      From-SVN: r193230
      Robert Dewar committed
    • i386-protos.h (emit_i387_cw_initialization): Deleted. · ff97910d
              * config/i386/i386-protos.h (emit_i387_cw_initialization): Deleted.
              (emit_vzero): Added prototype.
              (ix86_mode_entry): Likewise.
              (ix86_mode_exit): Likewise.
              (ix86_emit_mode_set): Likewise.
      
              * config/i386/i386.c (typedef struct block_info_def): Deleted.
              (define BLOCK_INFO): Deleted.
              (check_avx256_stores): Added checking for MEM_P.
              (move_or_delete_vzeroupper_2): Deleted.
              (move_or_delete_vzeroupper_1): Deleted.
              (move_or_delete_vzeroupper): Deleted.
              (ix86_maybe_emit_epilogue_vzeroupper): Deleted.
              (function_pass_avx256_p): Deleted.
              (ix86_function_ok_for_sibcall): Deleted disabling sibcall.
              (nit_cumulative_args): Deleted initialization of of avx256 fields of
              cfun->machine.
              (ix86_emit_restore_sse_regs_using_mov): Deleted vzeroupper generation.
              (ix86_expand_epilogue): Likewise.
              (ix86_avx_u128_mode_needed): New.
              (ix86_i387_mode_needed): Renamed ix86_mode_needed.
              (ix86_mode_needed): New.
              (ix86_avx_u128_mode_after): New.
              (ix86_mode_after): New.
              (ix86_avx_u128_mode_entry): New.
              (ix86_mode_entry): New.
              (ix86_avx_u128_mode_exit): New.
              (ix86_mode_exit): New.
              (ix86_emit_mode_set): New.
              (ix86_expand_call): Deleted vzeroupper generation.
              (ix86_split_call_vzeroupper): Deleted.
              (ix86_init_machine_status): Initialzed optimize_mode_switching.
              (ix86_expand_special_args_builtin): Changed.
              (ix86_reorg): Deleted a call of move_or_delete_vzeroupper.
      
              * config/i386/i386.h  (VALID_AVX256_REG_OR_OI_MODE): New.
              (AVX_U128): New.
              (avx_u128_state): New.
              (NUM_MODES_FOR_MODE_SWITCHING): Added AVX_U128_ANY.
              (MODE_AFTER): New.
              (MODE_ENTRY): New.
              (MODE_EXIT): New.
              (EMIT_MODE_SET): Changed.
              (machine_function): Deleted avx256 fields.
      
              * config/i386/i386.md (UNSPEC_CALL_NEEDS_VZEROUPPER): Deleted.
              (define_insn_and_split "*call_vzeroupper"): Deleted.
              (define_insn_and_split "*call_rex64_ms_sysv_vzeroupper"): Deleted.
              (define_insn_and_split "*sibcall_vzeroupper"): Deleted.
              (define_insn_and_split "*call_pop_vzeroupper"): Deleted.
              (define_insn_and_split "*sibcall_pop_vzeroupper"): Deleted.
              (define_insn_and_split "*call_value_vzeroupper"): Deleted.
              (define_insn_and_split "*sibcall_value_vzeroupper"): Deleted.
              (define_insn_and_split "*call_value_rex64_ms_sysv_vzeroupper"): Deleted.
              (define_insn_and_split "*call_value_pop_vzeroupper"): Deleted.
              (define_insn_and_split "*sibcall_value_pop_vzeroupper"): Deleted.
              (define_expand "return"): Deleted vzeroupper emitting.
              (define_expand "simple_return"): Deleted.
      
              * config/i386/predicates.md (vzeroupper_operation): New.
      
              * config/i386/sse.md (avx_vzeroupper): Changed.
      
      testsuite/ChangeLog:
              * gcc.target/i386/avx-vzeroupper-5.c: Changed scan-assembler-times.
              * gcc.target/i386/avx-vzeroupper-8.c: Likewise.
              * gcc.target/i386/avx-vzeroupper-9.c: Likewise.
              * gcc.target/i386/avx-vzeroupper-10.c: Likewise.
              * gcc.target/i386/avx-vzeroupper-11.c: Likewise.
              * gcc.target/i386/avx-vzeroupper-12.c: Likewise.
              * gcc.target/i386/avx-vzeroupper-19.c: Likewis.
              * gcc.target/i386/avx-vzeroupper-27.c: New.
      
      From-SVN: r193229
      Vladimir Yakovlev committed
    • exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate check when… · 3d6db7f8
      exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate check when evaluating the attribute Valid...
      
      2012-11-06  Gary Dismukes  <dismukes@adacore.com>
      
      	* exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate
      	check when evaluating the attribute Valid, and issue a warning
      	about infinite recursion when the check occurs within the
      	predicate function of the prefix's subtype.
      	* exp_ch4.adb (Expand_N_In): Remove test for Is_Discrete_Type
      	when we're checking that there's no predicate check function as a
      	condition for substituting a Valid check for a scalar membership
      	test (substitution should be suppressed for any kind of scalar
      	subtype with a predicate check). Also, don't emit a predicate
      	check when the right operand is a range.
      
      From-SVN: r193228
      Gary Dismukes committed
    • [multiple changes] · 150ac76e
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* par_sco.adb, bindgen.adb, exp_vfpt.adb, exp_vfpt.ads, exp_ch2.adb,
      	errout.adb, sem_ch8.adb: Minor reformatting.
      
      2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* einfo.adb: Include Loop_Entry_Attributes to the list of
      	Node/List/Elist10 usage.
      	(Loop_Entry_Attributes): New routine.
      	(Set_Loop_Entry_Attributes): New routine.
      	(Write_Field10_Name): Add an output string for Loop_Entry_Attributes.
      	* einfo.ads: Define new attribute Loop_Entry_Attributes along
      	with its usage in nodes.
      	(Loop_Entry_Attributes): New routine and dedicated pragma Inline.
      	(Set_Loop_Entry_Attributes): New routine and dedicated pragma Inline.
      	* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
      	Attribute_Loop_Entry here.
      	* exp_ch5.adb: Add with and use clause for Elists;
      	(Expand_Loop_Entry_Attributes): New routine.
      	(Expand_N_Loop_Statement): Add a call to Expand_Loop_Entry_Attributes.
      	* exp_prag.adb (Expand_Pragma_Loop_Assertion): Specialize the
      	search to include multiple nested loops produced by the expansion
      	of Ada 2012 array iterator.
      	* sem_attr.adb: Add with and use clause for Elists.
      	(Analyze_Attribute): Check the legality of attribute Loop_Entry.
      	(Resolve_Attribute): Nothing to do for Loop_Entry.
      	(S14_Attribute): New routine.
      	* snames.ads-tmpl: Add a comment on entries marked with
      	HiLite. Add new name Name_Loop_Entry. Add new attribute
      	Attribute_Loop_Entry.
      
      From-SVN: r193227
      Arnaud Charlet committed
    • re PR fortran/54917 ([OOP] TRANSFER on polymorphic variable causes ICE) · fa1ed658
      2012-11-06  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/54917
      	* target-memory.c (gfc_target_expr_size,gfc_target_interpret_expr):
      	Handle BT_CLASS.
      	* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Add support for
      	polymorphic arguments.
      
      2012-11-06  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/54917
      	* gfortran.dg/transfer_class_1.f90: New.
      	* gfortran.dg/transfer_class_2.f90: New.
      
      From-SVN: r193226
      Janus Weil committed
    • [multiple changes] · b887f1a0
      2012-11-06  Geert Bosch  <bosch@adacore.com>
      
      	* eval_fat.adb (Machine, Succ): Fix front end to support static
      	evaluation of attributes on targets with both VAX and IEEE float.
      	* sem_util.ads, sem_util.adb (Has_Denormals, Has_Signed_Zeros):
      	New type-specific functions. Previously we used Denorm_On_Target
      	and Signed_Zeros_On_Target directly, but that doesn't work well
      	for OpenVMS where a single target supports both floating point
      	with and without signed zeros.
      	* sem_attr.adb (Attribute_Denorm, Attribute_Signed_Zeros): Use
      	new Has_Denormals and Has_Signed_Zeros functions to support both
      	IEEE and VAX floating point on a single target.
      
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* bindgen.adb (System_Interrupts_Used): New variable.
      	(Gen_Adainit): Declare and call
      	Install_Restricted_Handlers_Sequential if System.Interrupts is
      	used when elaboration policy is sequential.
      
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch8.adb: Complete previous change.
      
      From-SVN: r193225
      Arnaud Charlet committed
    • [multiple changes] · 436d9f92
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* fe.h (Get_Vax_Real_Literal_As_Signed): Declare.
      	* eval_fat.adb, eval_fat.ads (Decompose_Int): Move spec in package spec.
      	* exp_vfpt.adb, exp_vfpt.ads (Vax_Real_Literal_As_Signed): New function.
      	(Expand_Vax_Real_Literal): Remove.
      	* exp_ch2.adb (Expand_N_Real_Literal): Do nothing.
      	* sem_eval.adb (Expr_Value_R): Remove special Vax float case,
      	as this is not anymore a special case.
      
      2012-11-06  Yannick Moy  <moy@adacore.com>
      
      	* uintp.ads: Minor correction of typo in comment.
      
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_prag.adb (Analyze_Pragnma, case Unchecked_Union): remove
      	requirement that discriminants of an unchecked_union must have
      	defaults.
      
      2012-11-06  Vasiliy Fofanov  <fofanov@adacore.com>
      
      	* projects.texi: Minor wordsmithing.
      
      From-SVN: r193224
      Arnaud Charlet committed
    • sem_ch9.adb, [...]: Minor reformatting. · a9b9fbf6
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* sem_ch9.adb, exp_vfpt.adb, xoscons.adb: Minor reformatting.
      
      From-SVN: r193223
      Robert Dewar committed
    • [multiple changes] · 7028ce0d
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* exp_vfpt.adb: Document VAX float point layout.
      
      2012-11-06  Geert Bosch  <bosch@adacore.com>
      
      	* eval_fat.adb (Machine): Don't return -0.0 on targets without
      	signed zeros.
      
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch9.adb (Analyze_Entry_Call_Alternative,
      	Check_Triggering_Statement): Reject properly an indirect call.
      
      From-SVN: r193222
      Arnaud Charlet committed
    • xoscons.adb, [...]: Add support for post-processing. · 9276875d
      2012-11-06  Pascal Obry  <obry@adacore.com>
      
      	* xoscons.adb, xutil.adb, xutil.ads: Add support for post-processing.
      
      From-SVN: r193221
      Pascal Obry committed
    • [multiple changes] · fb174746
      2012-11-06  Yannick Moy  <moy@adacore.com>
      
      	* s-bignum.adb (Div_Rem): Fix another bug in step D3.
      
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* s-tarest.adb (Create_Restricted_Task): Call
      	Create_Restricted_Task_Sequential in sequential case.
      
      2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_prag.adb (Expand_Pragma_Loop_Assertion): Do not rewrite the
      	pragma into a null statement as its presence is desirable in -gnatG
      	output.
      
      From-SVN: r193219
      Arnaud Charlet committed
    • [multiple changes] · 2780d174
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch8.adb (Check_Constrained_Object): Do nothing if the
      	renamed object is a limited record.
      
      2012-11-06  Bernard Banner  <banner@adacore.com>
      
      	* sysdep.c (_getpagesize): New. Minor reformatting.
      
      From-SVN: r193218
      Arnaud Charlet committed
    • sem_prag.adb: Minor reformatting. · 0ce1ec64
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* sem_prag.adb: Minor reformatting.
      
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* s-bignum.adb (Div_Rem): Fix bug in step D3.
      	* uintp.adb (UI_Div_Rem): Add comment on bug in step D3.
      
      From-SVN: r193217
      Robert Dewar committed
    • [multiple changes] · ed7b9d6e
      2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_prag.adb (Expand_Pragma_Loop_Assertion): Update the comment
      	on intended expansion.	Reimplement the logic which expands the
      	termination variants.
      	(Process_Increase_Decrease): Update the parameter profile and the
      	comment related to it. Accommodate the new aggregate-like appearance of
      	the termination variants.
      	* sem_prag.adb (Analyze_Pragma): Update the syntax of pragma
      	Loop_Assertion. Reimplement the semantic analysis of the pragma
      	to accommodate the new aggregate-like variant.
      	(Check_Variant): New routine.
      	* snames.ads-tmpl: Change names Name_Decreases and Name_Increases
      	to Name_Decreasing and Name_Increasing respectively. Add name
      	Variant.
      
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_eval.adb: Static evaluation of case expressions.
      
      From-SVN: r193216
      Arnaud Charlet committed
    • [multiple changes] · 2fe2920e
      2012-11-06  Robert Dewar  <dewar@adacore.com>
      
      	* exp_prag.adb, impunit.adb, exp_ch9.adb, par-ch4.adb,
      	s-tarest.adb: Minor reformatting.
      
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* s-tposen.ads: Minor comment update.
      
      2012-11-06  Arnaud Charlet  <charlet@adacore.com>
      
      	* sysdep.c: Rename sig* wrappers to use unique names.
      
      2012-11-06  Yannick Moy  <moy@adacore.com>
      
      	* exp_dbug.adb (Qualify_Entity_Name): Mark entity as having a qualified
      	name after being treated, in formal verification mode.
      
      2012-11-06  Fedor Rybin  <frybin@adacore.com>
      
      	* gnat_ugn.texi: Updating gnattest section to reflect changes
      	in default behaviour of the tool.
      
      From-SVN: r193215
      Arnaud Charlet committed
    • [multiple changes] · 6bc057a7
      2012-11-06  Thomas Quinot  <quinot@adacore.com>
      
      	* s-oscons-tmplt.c: Interfaces.C now needs to be WITH'd even
      	on platforms that do not support sockets (for the benefit of
      	subtype IOCTL_Req_T).
      
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* par-ch4.adb (P_Primary): if-expressions, case-expressions,
      	and quantified expressions are legal if surrounded by parentheses
      	from an enclosing context, such as a call or an instantiation.
      
      2012-11-06  Yannick Moy  <moy@adacore.com>
      
      	* impunit.adb (Get_Kind_Of_Unit): Return appropriate kind for
      	predefined implementation files, instead of returning
      	Not_Predefined_Unit on all .adb files.
      
      2012-11-06  Tristan Gingold  <gingold@adacore.com>
      
      	* exp_ch9.adb (Build_Activation_Chain_Entity): Return immediately if
      	partition elaboration policy is sequential.
      	(Build_Task_Activation_Call): Likewise. Use
      	Activate_Restricted_Tasks on restricted profile.
      	(Make_Task_Create_Call): Do not use the _Chain
      	parameter if elaboration policy is sequential. Call
      	Create_Restricted_Task_Sequential in that case.
      	* exp_ch3.adb (Build_Initialization_Call): Change condition to
      	support concurrent elaboration policy.
      	(Build_Record_Init_Proc): Likewise.
      	(Init_Formals): Likewise.
      	* bindgen.adb (Gen_Adainit): Declare Partition_Elaboration_Policy
      	and set it in generated code if the elaboration policy is
      	sequential. The procedure called to activate all tasks is now
      	named __gnat_activate_all_tasks.
      	* rtsfind.adb (RE_Activate_Restricted_Task,
      	RE_Create_Restricted_Task_Sequential): New RE_Id literals.
      	* s-tarest.adb (Create_Restricted_Task): Added to create a task without
      	adding it on an activation chain.
      	(Activate_Tasks): Has now a Chain parameter.
      	(Activate_All_Tasks_Sequential): Added. Called by the binder to
      	activate all tasks.
      	(Activate_Restricted_Tasks): Added. Called during elaboration to
      	activate tasks of the units.
      	* s-tarest.ads: Remove pragma Partition_Elaboration_Policy.
      	(Partition_Elaboration_Policy): New variable (set by the binder).
      	(Create_Restricted_Task): Revert removal of the chain parameter.
      	(Create_Restricted_Task_Sequential): New procedure.
      	(Activate_Restricted_Tasks): Revert removal.
      	(Activate_All_Tasks_Sequential): New procedure.
      
      From-SVN: r193214
      Arnaud Charlet committed
    • 2012-11-06 Bernard Banner <banner@adacore.com> · 3c55062f
      	* adaint.c Add file macro definitions missing on Android.
      	* adaint.h Avoid definitions related to task affinity and CPU
      	sets since this functionality is missing on the Android
      	* errno.c (__set_errno): Android already contains such a named
      	procedure so do include again.
      	* gsocket.h: Sockets not supported on Android.
      	* init.c: Avoid linux related code not supported on Android.
      	* sysdep.c (sigismember, sigaddset, sigdelset, sigemptyset,
      	sigfillset): wrapper functions since sig routines are defined
      	as inline macros on Android.
      	* terminals.c: Add stubs for terminal related functions not
      	supported on Android.
      
      From-SVN: r193213
      Bernard Banner committed
    • sem_prag.adb (Analyze_Pragma): Do not output the characters of an illegal… · 055311dd
      sem_prag.adb (Analyze_Pragma): Do not output the characters of an illegal argument as it may not have...
      
      2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_prag.adb (Analyze_Pragma): Do not
      	output the characters of an illegal argument as it may not have
      	characters to begin with.
      
      2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_prag.adb (Expand_Pragma_Loop_Assertion):
      	Change the order of argument processing to avoid disappearing
      	increase / decrease expressions.
      
      From-SVN: r193212
      Hristian Kirtchev committed
    • [multiple changes] · 41c15e3e
      2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_prag.adb: Add with and use clause for Sem_Ch8.
      	(Expand_N_Pragma): Add a new variant to expand pragma Loop_Assertion.
      	(Expand_Pragma_Loop_Assertion): New routine.
      	* par-prag.adb (Prag): The semantic analysis of pragma
      	Loop_Assertion is carried out by Analyze_Pragma. No need for
      	checks in the parser.
      	* sem_prag.adb: Add a reference position value for pragma
      	Loop_Assertion in Sig_Flags.
      	(Analyze_Pragma): Add semantic analysis for pragma Loop_Assertion.
      	* snames.ads-tmpl: Add the following new names:
      	Name_Decreases Name_Increases Name_Loop_Assertion.
      	Add new pragma id Pragma_Loop_Assertion.
      
      2012-11-06  Ed Schonberg  <schonberg@adacore.com>
      
      	* exp_ch5.adb: Identifier in iterator must have debug
      	information.
      
      From-SVN: r193211
      Arnaud Charlet committed
    • re PR target/41993 ([sh] ICE in create_pre_exit, at mode-switching.c:399) · 11e18556
      	PR target/41993
      	* mode-switching.c (create_pre_exit): Set return_copy to
      	last_insn when copy_start is a pseudo reg.
      
      
      Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org>
      
      From-SVN: r193210
      Uros Bizjak committed
    • Makefile.in (osconstool): Fix target. · 3020bfd1
      libada/
      	* Makefile.in (osconstool): Fix target.
      ada/
      	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Remove
      	duplicate rules handled by Make-generated.in.
      
      From-SVN: r193209
      Arnaud Charlet committed
    • i386.c (bdesc_args): Rename CODE_FOR_avx2_umulhrswv16hi3 to CODE_FOR_avx2_pmulhrswv16hi3. · 880ab4be
      	* config/i386/i386.c (bdesc_args): Rename CODE_FOR_avx2_umulhrswv16hi3 to
      	CODE_FOR_avx2_pmulhrswv16hi3.
      	* config/i386/predicates.md (const1_operand): Extend for vectors.
      	* config/i386/sse.md (ssse3_avx2): Extend.
      	(ssedoublemode): Ditto.
      	(<sse2_avx2>_uavg<mode>3): Merge avx2_uavgv32qi3, sse2_uavgv16qi3,
      	avx2_uavgv16hi3 and sse2_uavgv8hi3 into one.
      	(*<sse2_avx2>_uavg<mode>3): Merge *avx2_uavgv32qi3, *sse2_uavgv16qi3,
      	*avx2_uavgv16hi3 and *sse2_uavgv8hi3 into one.
      	(PMULHRSW): New.
      	(<ssse3_avx2>_pmulhrsw<mode>3): Merge avx2_umulhrswv16hi3,
      	ssse3_pmulhrswv8hi3 and ssse3_pmulhrswv4hi3 into one.
      	(*avx2_pmulhrswv16hi3): Replace const_vector with const1_operand
      	predicate.
      	(*ssse3_pmulhrswv8hi3): Ditto.
      	(*ssse3_pmulhrswv4hi3): Ditto.
      
      From-SVN: r193208
      Andrey Turetskiy committed
    • Update Copyright years. · 36947bd6
      From-SVN: r193207
      Joern Rennecke committed
    • Fix ChangeLog typo. · af1143bf
      From-SVN: r193206
      Joern Rennecke committed
    • epiphany.c (epiphany_address_cost): Use MODE parameter. · 2266617f
              * config/epiphany/epiphany.c (epiphany_address_cost):
              Use MODE parameter.
      
      From-SVN: r193205
      Joern Rennecke committed
    • Function Multiversioning · 3649b9b7
      ========================
      
      Sriraman Tallam, tmsriram@google.com
      
      Overview of the patch which adds support to specify function versions.  This is
      only enabled for target i386.
      
      Example:
      
      int foo ();  /* Default version */
      int foo () __attribute__ ((target("avx,popcnt")));/*Specialized for avx and popcnt */
      int foo () __attribute__ ((target("arch=core2,ssse3")));/*Specialized for core2 and ssse3*/
      
      int main ()
      {
       int (*p)() = &foo;
       return foo () + (*p)();
      }
      
      int foo ()
      {
       return 0;
      }
      
      int __attribute__ ((target("avx,popcnt")))
      foo ()
      {
       return 0;
      }
      
      int __attribute__ ((target("arch=core2,ssse3")))
      foo ()
      {
       return 0;
      }
      
      The above example has foo defined 3 times, but all 3 definitions of foo are
      different versions of the same function. The call to foo in main, directly and
      via a pointer, are calls to the multi-versioned function foo which is dispatched
      to the right foo at run-time.
      
      Front-end changes:
      
      The front-end changes are calls at appropriate places to target hooks that
      determine the following:
      
      * Determine if two function decls with the same signature are versions.
      * Determine the assembler name of a function version.
      * Generate the dispatcher function for a set of function versions.
      * Compare versions to see if one has a higher priority over the other.
      
      All the implementation happens in the target-specific config/i386/i386.c.
      
      What does the patch do?
      
      * Tracking decls that correspond to function versions of function
      name, say "foo":
      
      When the front-end sees more than one decl for "foo", it calls a target hook to
      determine if they are versions. To prevent duplicate definition errors with
      other versions of "foo", "decls_match" function in cp/decl.c is made to return
      false when 2 decls have are deemed versions by the target. This will make all
      function versions of "foo" to be added to the overload list of "foo".
      
      * Change the assembler names of the function versions.
      
      For i386, the target changes the assembler names of the function versions by
       suffixing the sorted list of args to "target" to the function name of "foo".
      For example, the assembler name of
       "void foo () __attribute__ ((target ("sse4")))" will
      become _Z3foov.sse4.  The target hook mangle_decl_assembler_name is used
      for this.
      
      * Overload resolution:
      
       Function "build_over_call" in cp/call.c sees a call to function
      "foo", which is multi-versioned. The overload resolution happens in
      function "joust" in "cp/call.c". Here, the call to "foo" has all
      possible versions of "foo" as candidates. All the candidates of "foo" are
      stored in the cgraph side data structure. Each version of foo is chained in a 
      doubly-linked list with the default function as the first element.  This allows
      any pass to access all the semantically identical versions. A call to a
      multi-versioned function will be replaced by a call to a dispatcher function,
      determined by a target hook, to execute the right function version at run-time.
      
      Optimization to directly call a version when possible:
      Also, in joust, where overload resolution happens, a multiversioned function
      resolution is made to return the most specialized version.  This is the version
      that will be checked for dispatching first and is determined by the target.
      Now, if the caller can inline this function version then a direct call is made
      to this function version rather than go through the dispatcher. When a direct
      call cannot be made, a call to the dispatcher function is created.
      
      * Creating the dispatcher body.
      
      The dispatcher body, called the resolver is made only when there is a call to a
      multiversioned function dispatcher or the address of a function is taken. This
      is generated during cgraph_analyze_function. This is done by another target hook.
      
      * Dispatch ordering.
      
      The order in which the function versions are checked during dispatch is based
      on a priority value assigned for the ISA that is catered. More specialized 
      versions are checked for dispatching first.  This is to mitigate the ambiguity
      that can arise when more than one function version is valid for execution on
      a particular platform.  This is not a perfect solution, and in future the user
      should be allowed to assign a dispatching priority value to each version.
      
      Function MV in the Intel compiler:
      
      The intel compiler supports function multiversioning and the syntax is
      similar to the patch proposed here.  Here is an example of how to
      generate multiple function versions with the intel compiler.
      
      /* Create a stub function to specify the various versions of function that
         will be created, using declspec attribute cpu_dispatch.  */
      __declspec (cpu_dispatch (core_i7_sse4_2, atom, generic))
      void foo () {};
      
      /* Bodies of each function version.  */
      
      /* Intel Corei7 processor + SSE4.2 version.  */
      __declspec (cpu_specific(core_i7_sse4_2))
      void foo ()
      {
        printf ("corei7 + sse4.2");
      }
      
      /* Atom processor.  */
      __declspec (cpu_specific(atom))
      void foo ()
      {
        printf ("atom");
      }
      
      /* The generic or the default version.  */
      __declspec (cpu_specific(generic))
      void foo ()
      {
        printf ("This is generic");
      }
      
      A new function version is generated by defining a new function with the same
      signature but with a different cpu_specific declspec attribute string.  The
      set of cpu_specific strings that are allowed is the following:
      
      "core_2nd_gen_avx"
      "core_aes_pclmulqdq"
      "core_i7_sse4_2"
      "core_2_duo_sse4_1"
      "core_2_duo_ssse3"
      "atom"
      "pentium_4_sse3"
      "pentium_4"
      "pentium_m"
      "pentium_iii"
      "generic"
      
      Comparison with the GCC MV implementation in this patch:
      
      * Version creation syntax:
      
      The implementation in this patch also has a similar syntax to specify function
      versions. The first stub function is not needed.  Here is the code to generate
      the function versions with this patch:
      
      /* Intel Corei7 processor + SSE4.2 version.  */
      __attribute__ ((target ("arch=corei7, sse4.2")))
      void foo ()
      {
        printf ("corei7 + sse4.2");
      }
      
      /* Atom processor.  */
      __attribute__ ((target ("arch=atom")))
      void foo ()
      {
        printf ("atom");
      }
      
      void foo ()
      {
      }
      
      The target attribute can have one of the following arch names:
      
      "amd"
      "intel"
      "atom"
      "core2"
      "corei7"
      "nehalem"
      "westmere"
      "sandybridge"
      "amdfam10h"
      "barcelona"
      "shanghai"
      "istanbul"
      "amdfam15h"
      "bdver1"
      "bdver2"
      
      and any number of the following ISA names:
      
      "cmov"
      "mmx"
      "popcnt"
      "sse"
      "sse2"
      "sse3"
      "ssse3"
      "sse4.1"
      "sse4.2"
      "avx"
      "avx2"
      
      
      
      	* doc/tm.texi.in (TARGET_OPTION_FUNCTION_VERSIONS): New hook
      	description.
      	* (TARGET_COMPARE_VERSION_PRIORITY): New hook description.
      	* (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New hook description.
      	* (TARGET_GENERATE_VERSION_DISPATCHER_BODY): New hook description.
      	* doc/tm.texi: Regenerate.
      	* target.def (compare_version_priority): New target hook.
      	* (generate_version_dispatcher_body): New target hook.
      	* (get_function_versions_dispatcher): New target hook.
      	* (function_versions): New target hook.
      	* cgraph.c (cgraph_fnver_htab): New htab.
      	(cgraph_fn_ver_htab_hash): New function.
      	(cgraph_fn_ver_htab_eq): New function.
      	(version_info_node): New pointer.
      	(insert_new_cgraph_node_version): New function.
      	(get_cgraph_node_version): New function.
      	(delete_function_version): New function.
      	(record_function_versions): New function.
      	* cgraph.h (cgraph_node): New bitfield dispatcher_function.
      	(cgraph_function_version_info): New struct.
      	(get_cgraph_node_version): New function.
      	(insert_new_cgraph_node_version): New function.
      	(record_function_versions): New function.
      	(delete_function_version): New function.
      	(init_lowered_empty_function): Expose function.
      	* tree.h (DECL_FUNCTION_VERSIONED): New macro.
      	(tree_function_decl): New bit-field versioned_function.
      	* cgraphunit.c (cgraph_analyze_function): Generate body of multiversion
      	function dispatcher.
      	(cgraph_analyze_functions): Analyze dispatcher function.
      	(init_lowered_empty_function): Make non-static. New parameter in_ssa.
      	(assemble_thunk): Add parameter to call to init_lowered_empty_function.
      	* config/i386/i386.c (add_condition_to_bb): New function.
      	(get_builtin_code_for_version): New function.
      	(ix86_compare_version_priority): New function.
      	(feature_compare): New function.
      	(dispatch_function_versions): New function.
      	(ix86_function_versions): New function.
      	(attr_strcmp): New function.
      	(ix86_mangle_function_version_assembler_name): New function.
      	(ix86_mangle_decl_assembler_name): New function.
      	(make_name): New function.
      	(make_dispatcher_decl): New function.
      	(is_function_default_version): New function.
      	(ix86_get_function_versions_dispatcher): New function.
      	(make_attribute): New function.
      	(make_resolver_func): New function.
      	(ix86_generate_version_dispatcher_body): New function.
      	(fold_builtin_cpu): Return integer for cpu builtins.
      	(TARGET_MANGLE_DECL_ASSEMBLER_NAME): New macro.
      	(TARGET_COMPARE_VERSION_PRIORITY): New macro.
      	(TARGET_GENERATE_VERSION_DISPATCHER_BODY): New macro.
      	(TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New macro.
      	(TARGET_OPTION_FUNCTION_VERSIONS): New macro.
      
      	* class.c (add_method): Change assembler names of function versions.
      	(mark_versions_used): New static function.
      	(resolve_address_of_overloaded_function): Create dispatcher decl and
      	return address of dispatcher instead.
      	* decl.c (decls_match): Make decls unmatched for versioned
      	functions.
      	(duplicate_decls): Remove ambiguity for versioned functions.
      	Delete versioned function data for merged decls. 
      	* decl2.c (check_classfn): Check attributes of versioned functions
      	for match.
      	* call.c (get_function_version_dispatcher): New function.
      	(mark_versions_used): New static function.
      	(build_over_call): Make calls to multiversioned functions
      	to call the dispatcher.
      	(joust): For calls to multi-versioned functions, make the most
      	specialized function version win.
      
      	* testsuite/g++.dg/mv1.C: New test.
      	* testsuite/g++.dg/mv2.C: New test.
      	* testsuite/g++.dg/mv3.C: New test.
      	* testsuite/g++.dg/mv4.C: New test.
      	* testsuite/g++.dg/mv5.C: New test.
      	* testsuite/g++.dg/mv6.C: New test.
      
      From-SVN: r193204
      Sriraman Tallam committed
    • Daily bump. · 8787e27c
      From-SVN: r193201
      GCC Administrator committed