gcc.git
10 years agogimple.c (gimple_canonical_types, [...]): Move to lto/lto.c
Richard Biener [Mon, 14 Oct 2013 12:06:38 +0000 (12:06 +0000)]
gimple.c (gimple_canonical_types, [...]): Move to lto/lto.c

2013-10-14  Richard Biener  <rguenther@suse.de>

* gimple.c (gimple_canonical_types, canonical_type_hash_cache,
iterative_hash_canonical_type, gimple_canonical_type_hash,
gimple_canonical_types_compatible_p, gimple_canonical_type_eq,
gimple_register_canonical_type, print_gimple_types_stats,
free_gimple_type_tables): Move to lto/lto.c
(gt-gimple.h): Do not include.
* gimple.h (gimple_register_canonical_type,
print_gimple_types_stats, free_gimple_type_tables): Remove.
* Makefile.in (GTFILES): Remove gimple.c.

lto/
* lto-lang.c (lto_init): Do not re-init canonical types here.
(lto_register_canonical_types): Move to ...
* lto.c (lto_register_canonical_types): ... here.
(gimple_canonical_types, canonical_type_hash_cache,
iterative_hash_canonical_type, gimple_canonical_type_hash,
gimple_canonical_types_compatible_p, gimple_canonical_type_eq,
gimple_register_canonical_type): Add canonical type merging machinery
moved from gimple.c.
(read_cgraph_and_symbols): Init and free canonical type tables
here.
(print_lto_report_1): Report canonical type table stats here.

From-SVN: r203521

10 years agore PR target/58716 ([PATCH] MSP430X check is inverted)
Travis Snoozy [Mon, 14 Oct 2013 11:24:17 +0000 (11:24 +0000)]
re PR target/58716 ([PATCH] MSP430X check is inverted)

PR target/58716
* config/msp430/msp430.c (msp430_option_override): Correct thinko
scanning for msp430x targets.

From-SVN: r203520

10 years agore PR bootstrap/58509 (ICE in calc_dfs_tree, at dominance.c:397 during Ada runtime...
Eric Botcazou [Mon, 14 Oct 2013 10:13:12 +0000 (10:13 +0000)]
re PR bootstrap/58509 (ICE in calc_dfs_tree, at dominance.c:397 during Ada runtime build)

PR bootstrap/58509
* config/sparc/sparc-protos.h (widen_mem_for_ldd_peep): Declare.
(registers_ok_for_ldd_peep): Move around.
* config/sparc/sparc.c (widen_mem_for_ldd_peep): New.
* config/sparc/sparc.md (widening peepholes): Use it.

From-SVN: r203518

10 years agore PR other/58712 (issues found by --enable-checking=valgrind)
Richard Biener [Mon, 14 Oct 2013 09:24:36 +0000 (09:24 +0000)]
re PR other/58712 (issues found by --enable-checking=valgrind)

2013-10-14  Richard Biener  <rguenther@suse.de>

PR middle-end/58712
PR middle-end/55358
* gimple.c (iterative_hash_canonical_type): Make sure to
record the hash into the correct hashtable slot.

From-SVN: r203517

10 years agore PR tree-optimization/58640 (wrong code (segfaults) at -O3 on x86_64-linux-gnu)
Richard Biener [Mon, 14 Oct 2013 09:17:20 +0000 (09:17 +0000)]
re PR tree-optimization/58640 (wrong code (segfaults) at -O3 on x86_64-linux-gnu)

2013-10-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/58640
* gcc.c-torture/execute/pr58640-2.c: New testcase.

From-SVN: r203516

10 years agoenv.c (parse_bind_var): Initialize value to avoid (false positive) warning.
Jakub Jelinek [Mon, 14 Oct 2013 08:26:18 +0000 (10:26 +0200)]
env.c (parse_bind_var): Initialize value to avoid (false positive) warning.

* env.c (parse_bind_var): Initialize value to avoid
(false positive) warning.

From-SVN: r203514

10 years agoDaily bump.
GCC Administrator [Mon, 14 Oct 2013 00:16:25 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r203511

10 years agoMake-lang.in (ada/%.o): Replace individual rules with generic rule and add $(POSTCOMP...
Nicolas Roche [Sun, 13 Oct 2013 20:27:26 +0000 (20:27 +0000)]
Make-lang.in (ada/%.o): Replace individual rules with generic rule and add $(POSTCOMPILE).

* gcc-interface/Make-lang.in (ada/%.o): Replace individual rules with
generic rule and add $(POSTCOMPILE).
(ADA_DEPS): New.
(.adb.o): Add @$(ADA_DEPS).
(.ads.o): Likewise.
(ada/a-except.o): Likewise.
(ada/s-excdeb.): Likewise.
(ada/s-assert.o): Likewise.
(ada/a-tags.o): Likewise.
(ada_generated_files): New variable.
Use them as dependency order for GNAT1_ADA_OBJS and GNATBIND_OBJS.
(ADA_DEPFILES): New variable.
Include them.
(ada_OBJS): Define.

Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r203508

10 years agodecl.c (gnat_to_gnu_entity): Force all local variables with aggregate types in memory...
Eric Botcazou [Sun, 13 Oct 2013 17:20:58 +0000 (17:20 +0000)]
decl.c (gnat_to_gnu_entity): Force all local variables with aggregate types in memory if not optimizing.

* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Force all local
variables with aggregate types in memory if not optimizing.

From-SVN: r203507

10 years ago[multiple changes]
Arnaud Charlet [Sun, 13 Oct 2013 16:37:01 +0000 (18:37 +0200)]
[multiple changes]

2013-10-13  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Check_Mode): Do
not emit an error when we are looking at inputs and
the item is an unconstrained or tagged out parameter.
(Check_Mode_Restriction_In_Enclosing_Context): Use Get_Pragma
to find whether the context is subject to aspect/pragma Global.
(Collect_Subprogram_Inputs_Outputs): Unconstrained or tagged
out parameters are now considered inputs. Use Get_Pragma to
find wheher the subprogram is subject to aspect/pragma Global.
(Is_Unconstrained_Or_Tagged_Item): New routine.

2013-10-13  Thomas Quinot  <quinot@adacore.com>

* einfo.ads: Minor reformatting.
* gcc-interface/Make-lang.in: Update dependencies.

From-SVN: r203506

10 years agognat_rm.texi: Add documentation for pragmas Pre[_Class] Post[_Class].
Robert Dewar [Sun, 13 Oct 2013 16:34:01 +0000 (16:34 +0000)]
gnat_rm.texi: Add documentation for pragmas Pre[_Class] Post[_Class].

2013-10-13  Robert Dewar  <dewar@adacore.com>

* gnat_rm.texi: Add documentation for pragmas Pre[_Class]
Post[_Class].
* par-ch2.adb (Skip_Pragma_Semicolon): Handle extra semicolon nicely.
* par-prag.adb: Add entries for pragmas Pre[_Class] and
Post[_Class].
* sem_prag.adb: Add handling of pragmas Pre[_Class] and
Post[_Class].
* sem_util.adb (Original_Aspect_Name): Moved here from
Sem_Prag.Original_Name, and modified to handle pragmas
Pre/Post/Pre_Class/Post_Class.
* sem_util.ads (Original_Aspect_Name): Moved here from
Sem_Prag.Original_Name.
* snames.ads-tmpl: Add entries for pragmas Pre[_Class] and
Post[_Class].

2013-10-13  Robert Dewar  <dewar@adacore.com>

* einfo.adb, sem_ch6.adb: Minor reformatting.

From-SVN: r203505

10 years agoeinfo.adb: Add node/list usage for Refined_State and Refinement_Constituents.
Hristian Kirtchev [Sun, 13 Oct 2013 16:31:00 +0000 (16:31 +0000)]
einfo.adb: Add node/list usage for Refined_State and Refinement_Constituents.

2013-10-13  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb: Add node/list usage for Refined_State
and Refinement_Constituents.
(Get_Pragma): Update the
initialization of Is_CDG to include Refined_Global and
Refined_Depends. Rename constant Delayed to In_Contract and update
all of its occurrences.
(Is_Non_Volatile_State): New routine.
(Is_Volatile_State): Removed.
(Refined_State): New routine.
(Refinement_Constituents): New routine.
(Set_Refined_State): New routine.
(Set_Refinement_Constituents): New routine.
(Write_Field8_Name): Add output for Refinement_Constituents.
(Write_Field10_Name): Add output for Refined_State.
* einfo.ads: Add new synthesized attribute Is_Non_Volatile_State.
Remove synthesized attribute Is_Volatile_State.  Add new
attributes Refined_State and Refinement_Constituents along with
usage in nodes.
(Get_Pragma): Update the comment on usage.
(Is_Non_Volatile_State): New routine.
(Is_Volatile_State): Removed.
(Refined_State): New routine and pragma Inline.
(Refinement_Constituents): New routine and pragma Inline.
(Set_Refined_State): New routine and pragma Inline.
(Set_Refinement_Constituents): New routine and pragma Inline.
* elists.ads, elists.adb (Clone): Removed.
(New_Copy_Elist): New routine.
(Remove): New routine.
* sem_ch3.adb (Analyze_Declarations): Use Defining_Entity
to get the entity of the subprogram [body].
(Analyze_Object_Declaration): Add initialization for
Refined_State.
* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing
for Refined_Global and Refined_Depends. Emit an error when
the body requires Refined_Global, but the aspect/pragma is
not present.
* sem_ch6.ads (Analyze_Subprogram_Body_Contract): Change
procedure signature and add comment on usage.
* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
for aspect Refined_Global.
* sem_prag.adb (Analyze_Abstract_State): Add initialization
of attributes Refined_State and Refinement_Constituents.
(Analyze_Depends_In_Decl_Part, Analyze_Global_In_Decl_Part,
Analyze_Contract_Cases_In_Decl_Part): Remove local
constant Arg1.
(Analyze_Pragma): Add processing for pragma
Refined_Global. The analysis of Refined_Post and Refined_Pre
has been merged. Update an error message in the processing of
pragma Refined_State.
(Analyze_Refined_Global_In_Decl_Part): Provide implementation.
(Analyze_Refined_Pragma): New routine.
(Analyze_Refined_Pre_Post_Condition): Removed.
(Analyze_Refined_State_In_Decl_Part): Update the call to Clone.
(Analyze_Refinement_Clause): Make State_Id visible to all
nested subprogram.
(Check_Matching_Constituent): Establish
a relation between a refined state and its constituent.
(Collect_Hidden_States_In_Decls): Remove ??? comment. Look at
the entity of the object declaration to establish its kind.
* sem_util.adb: Alphabetize with and use clauses.
(Contains_Refined_State): New routine.
* sem_util.ads (Contains_Refined_State): New routine.

From-SVN: r203504

10 years ago[multiple changes]
Arnaud Charlet [Sun, 13 Oct 2013 16:21:32 +0000 (18:21 +0200)]
[multiple changes]

2013-10-13  Thomas Quinot  <quinot@adacore.com>

* scos.ads: Minor documentation clarification.

2013-10-13  Thomas Quinot  <quinot@adacore.com>

* s-oscons-tmplt.c (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC when
building on AIX 5.3 or later, and to CLOCK_REALTIME on older
versions of AIX.
* init.c (pthread_condattr_setclock): Remove now useless weak symbol.
* thread.c(__gnat_pthread_condattr_setup): Remove bogus AIX 5.2
compatibility shim.
* s-osinte-aix.ads(clock_id_t): Fix C mapping (this is a 64-bit
type).
(clock_gettime): Import from C runtime library.
* s-osinte-aix.adb (clock_gettime): Remove bogus emulation body,
this routine is provided by the system in current supported
versions of AIX.

2013-10-13  Robert Dewar  <dewar@adacore.com>

* sem_ch3.adb: Minor reformatting.

2013-10-13  Ed Schonberg  <schonberg@adacore.com>

* freeze.adb (Freeze_Entity): For a function whose return type
is incomplete, do not replace the type with the full view if the
type is a limited view.  In that case the full view appears in a
different unit, and the back-end will retrieve it at the proper
elaboration point.

2013-10-13  Yannick Moy  <moy@adacore.com>

* exp_spark.adb (Expand_SPARK_Call): Do not introduce temporaries for
actuals.

From-SVN: r203503

10 years ago[multiple changes]
Arnaud Charlet [Sun, 13 Oct 2013 16:17:09 +0000 (18:17 +0200)]
[multiple changes]

2013-10-13  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb: in Ada 2012 access_to_function types can have
in-out parameters.
(Derived_Type_Declaration): SPARK restriction
must be flagged on the original node, since it may have been
written as a subtype declaration.
(Analyze_Subtype_Declaration): Do not enter name of
entity in declaration if it is the current entity, because it may
have been inserted in a previous analysis and it appears in the
else_part of an if-statement that is rewritten during expansion.

2013-10-13  Yannick Moy  <moy@adacore.com>

* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove procedure.
(Expand_SPARK): Remove call to Expand_SPARK_N_Attribute_Reference and
Expand_SPARK_N_Simple_Return_Statement.
(Expand_SPARK_N_Simple_Return_Statement,
  Expand_SPARK_Simple_Function_Return): Remove procedures.

From-SVN: r203502

10 years ago[multiple changes]
Arnaud Charlet [Sun, 13 Oct 2013 16:14:16 +0000 (18:14 +0200)]
[multiple changes]

2013-10-13  Vincent Celier  <celier@adacore.com>

* gnat_ugn.texi: Minor editing.

2013-10-13  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Check_Abstract_Overriding): If a synchronized
operation implements an interface primitive, mark the operation
as referenced, to prevent usually spurious messages about unused
entities: such operations are called in dispatching select
statements that are not visible to the compiler.

From-SVN: r203501

10 years ago* gcc-interface/decl.c (gnat_to_gnu_param): Remove obsolete comment.
Eric Botcazou [Sun, 13 Oct 2013 14:58:43 +0000 (14:58 +0000)]
* gcc-interface/decl.c (gnat_to_gnu_param): Remove obsolete comment.

From-SVN: r203499

10 years agore PR rtl-optimization/58662 (wrong code at -O2 for dumb condition)
Eric Botcazou [Sun, 13 Oct 2013 13:29:28 +0000 (13:29 +0000)]
re PR rtl-optimization/58662 (wrong code at -O2 for dumb condition)

PR rtl-optimization/58662
* combine.c (try_combine): Take into account death nodes on I2 when
splitting a PARALLEL of two independent SETs.  Fix dump message.

From-SVN: r203498

10 years agocompiler: Fix handling of imported struct with embedded builtin type.
Ian Lance Taylor [Sun, 13 Oct 2013 04:15:20 +0000 (04:15 +0000)]
compiler: Fix handling of imported struct with embedded builtin type.

From-SVN: r203496

10 years agoDaily bump.
GCC Administrator [Sun, 13 Oct 2013 00:16:46 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r203495

10 years agore PR target/51244 ([SH] Inefficient conditional branch and code around T bit)
Oleg Endo [Sat, 12 Oct 2013 20:47:22 +0000 (20:47 +0000)]
re PR target/51244 ([SH] Inefficient conditional branch and code around T bit)

PR target/51244
* config/sh/sh_treg_combine.cc: New SH specific RTL pass.
* config.gcc (SH extra_objs): Add sh_ifcvt.o.
* config/sh/t-sh (sh_treg_combine.o): New entry.
* config/sh/sh.c (sh_fixed_condition_code_regs): New function that
implements the target hook TARGET_FIXED_CONDITION_CODE_REGS.
(register_sh_passes): New function.  Register sh_treg_combine pass.
(sh_option_override): Invoke it.
(sh_canonicalize_comparison): Handle op0_preserve_value.
* sh.md (*cbranch_t"): Do not try to optimize missed test and branch
opportunities.  Canonicalize branch condition.
(nott): Allow only if pseudos can be created for non-SH2A.

PR target/51244
* gcc.dg/torture/p51244-21.c: New.
* gcc.target/sh/pr51244-20.c: New.
* gcc.target/sh/pr51244-20-sh2a.c: New.

From-SVN: r203492

10 years agoSlightly related to PR/58645:
Arnaud Charlet [Sat, 12 Oct 2013 18:40:25 +0000 (18:40 +0000)]
Slightly related to PR/58645:

* gnat.dg/specs/linker_section.ads: Update test.

From-SVN: r203490

10 years agoChangeLog: Fix whitespace.
Uros Bizjak [Sat, 12 Oct 2013 16:17:24 +0000 (18:17 +0200)]
ChangeLog: Fix whitespace.

* ChangeLog: Fix whitespace.
* testsuite/ChangeLog: Ditto.

From-SVN: r203489

10 years agoTruncate x32 DImode TLS address to a SImode register
H.J. Lu [Sat, 12 Oct 2013 14:55:28 +0000 (14:55 +0000)]
Truncate x32 DImode TLS address to a SImode register

gcc/

PR target/58690
* config/i386/i386.c (ix86_copy_addr_to_reg): New function.
(ix86_expand_movmem): Replace copy_addr_to_reg with
ix86_copy_addr_to_reg.
(ix86_expand_setmem): Likewise.

gcc/testsuite/

PR target/58690
* gcc.target/i386/pr58690.c: New test

From-SVN: r203486

10 years agoi386.c (ix86_expand_sse_compare_and_jump): Use mode provided by ix86_fp_compare_mode...
Alexander Monakov [Sat, 12 Oct 2013 12:48:23 +0000 (16:48 +0400)]
i386.c (ix86_expand_sse_compare_and_jump): Use mode provided by ix86_fp_compare_mode instead of CCFPUmode.

* config/i386/i386.c (ix86_expand_sse_compare_and_jump): Use mode
provided by ix86_fp_compare_mode instead of CCFPUmode.

testsuite/:
* gcc.target/i386/builtin-ucmp.c: New test.

From-SVN: r203483

10 years agore PR libgomp/58691 (OpenMP 4: Surprising results with OMP_PLACES=)
Jakub Jelinek [Sat, 12 Oct 2013 07:52:15 +0000 (09:52 +0200)]
re PR libgomp/58691 (OpenMP 4: Surprising results with OMP_PLACES=)

PR libgomp/58691
* config/linux/proc.c (gomp_cpuset_popcount): Add unused attribute
to check variable.
(gomp_init_num_threads): Move i variable declaration into
#ifdef CPU_ALLOC_SIZE block.
* config/linux/affinity.c (gomp_affinity_init_level): Test
gomp_places_list_len == 0 rather than gomp_places_list == 0
when checking for topology reading error.
* team.c (gomp_team_start): Don't handle bind == omp_proc_bind_false.
* env.c (parse_affinity): Add ignore argument, if true, don't populate
gomp_places_list, only parse env var and always return false.
(parse_places_var): Likewise.  Don't check gomp_global_icv.bind_var.
(initialize_env): Always parse OMP_PLACES and GOMP_CPU_AFFINITY env
vars, default to OMP_PROC_BIND=true if OMP_PROC_BIND wasn't specified
and either of these variables were parsed correctly into a places
list.

From-SVN: r203479

10 years ago[AArch64] Fix early-clobber operands to vtbx[1,3]
James Greenhalgh [Sat, 12 Oct 2013 07:49:47 +0000 (07:49 +0000)]
[AArch64] Fix early-clobber operands to vtbx[1,3]

gcc/
* config/aarch64/arm_neon.h
(vtbx<1,3>_<psu>8): Fix register constriants.

From-SVN: r203478

10 years agocp-demangle.c (d_name): Demangle local-source-names.
Paul Pluzhnikov [Sat, 12 Oct 2013 00:31:18 +0000 (17:31 -0700)]
cp-demangle.c (d_name): Demangle local-source-names.

2013-10-11  Paul Pluzhnikov  <ppluzhnikov@google.com>

* cp-demangle.c (d_name): Demangle local-source-names.
* testsuite/demangle-expected: New test.

From-SVN: r203476

10 years agoDaily bump.
GCC Administrator [Sat, 12 Oct 2013 00:16:42 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r203475

10 years agoaltivec-7.C: Check for standard vector-type name mangling.
Brooks Moses [Fri, 11 Oct 2013 23:23:08 +0000 (16:23 -0700)]
altivec-7.C: Check for standard vector-type name mangling.

* g++.dg/ext/altivec-7.C: Check for standard vector-type name
  mangling.

From-SVN: r203469

10 years agocompiler: Fix handling of hidden methods for unnamed types.
Ian Lance Taylor [Fri, 11 Oct 2013 22:53:17 +0000 (22:53 +0000)]
compiler: Fix handling of hidden methods for unnamed types.

If an interface has hidden methods, we must make the interface
table comdat if it is for an unnamed type.

When we create a stub method for an unnamed type, don't make
it publically visible.

From-SVN: r203468

10 years agocompiler: Use backend interface for function code expressions.
Chris Manghane [Fri, 11 Oct 2013 22:17:47 +0000 (22:17 +0000)]
compiler: Use backend interface for function code expressions.

* go-gcc.cc (Gcc_backend::function_code_expression): New
function.

From-SVN: r203467

10 years agore PR tree-optimization/58640 (wrong code (segfaults) at -O3 on x86_64-linux-gnu)
Jeff Law [Fri, 11 Oct 2013 20:31:25 +0000 (14:31 -0600)]
re PR tree-optimization/58640 (wrong code (segfaults) at -O3 on x86_64-linux-gnu)

PR tree-optimization/58640
* tree-ssa-threadupdate.c (mark_threaded_blocks): Truncate jump threading
paths that cross over two loop entry points.

* gcc.c-torture/execute/pr58640.c: New test.

From-SVN: r203463

10 years agovsx.md (*vsx_le_perm_load_v2di): Generalize to handle vector float as well.
Bill Schmidt [Fri, 11 Oct 2013 18:53:52 +0000 (18:53 +0000)]
vsx.md (*vsx_le_perm_load_v2di): Generalize to handle vector float as well.

2013-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/vsx.md (*vsx_le_perm_load_v2di): Generalize to
handle vector float as well.
(*vsx_le_perm_load_v4si): Likewise.
(*vsx_le_perm_store_v2di): Likewise.
(*vsx_le_perm_store_v4si): Likewise.

From-SVN: r203458

10 years agovector.md (vec_realign_load<mode>): Generate vperm directly to circumvent subtract...
Bill Schmidt [Fri, 11 Oct 2013 18:52:07 +0000 (18:52 +0000)]
vector.md (vec_realign_load<mode>): Generate vperm directly to circumvent subtract from splat{31} workaround.

2013-10-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/vector.md (vec_realign_load<mode>): Generate vperm
directly to circumvent subtract from splat{31} workaround.
* config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_le): New
prototype.
* config/rs6000/rs6000.c (altivec_expand_vec_perm_le): New.
* config/rs6000/altivec.md (define_c_enum "unspec"): Add
UNSPEC_VPERM_X and UNSPEC_VPERM_UNS_X.
(altivec_vperm_<mode>): Convert to define_insn_and_split to
separate big and little endian logic.
(*altivec_vperm_<mode>_internal): New define_insn.
(altivec_vperm_<mode>_uns): Convert to define_insn_and_split to
separate big and little endian logic.
(*altivec_vperm_<mode>_uns_internal): New define_insn.
(vec_permv16qi): Add little endian logic.

From-SVN: r203457

10 years agoUpdate x32 baseline_symbols.txt
H.J. Lu [Fri, 11 Oct 2013 18:46:22 +0000 (18:46 +0000)]
Update x32 baseline_symbols.txt

* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Update.

From-SVN: r203456

10 years agocompiler: Error if receiver and parameter have same name.
Ian Lance Taylor [Fri, 11 Oct 2013 18:28:04 +0000 (18:28 +0000)]
compiler: Error if receiver and parameter have same name.

From-SVN: r203455

10 years agocompiler: Better error message of unsafe.Offsetof(method value).
Ian Lance Taylor [Fri, 11 Oct 2013 18:10:03 +0000 (18:10 +0000)]
compiler: Better error message of unsafe.Offsetof(method value).

From-SVN: r203454

10 years agocompiler: accept integral float constants as string indices.
Ian Lance Taylor [Fri, 11 Oct 2013 17:45:29 +0000 (17:45 +0000)]
compiler: accept integral float constants as string indices.

From-SVN: r203452

10 years agoextend.texi (returns_nonnull): Remove arguments.
Marc Glisse [Fri, 11 Oct 2013 17:37:44 +0000 (19:37 +0200)]
extend.texi (returns_nonnull): Remove arguments.

2013-10-11  Marc Glisse  <marc.glisse@inria.fr>

* doc/extend.texi (returns_nonnull): Remove arguments.

From-SVN: r203451

10 years agocompiler: Improve handling of invalid ASCII characters in identifiers.
Ian Lance Taylor [Fri, 11 Oct 2013 17:04:42 +0000 (17:04 +0000)]
compiler: Improve handling of invalid ASCII characters in identifiers.

From-SVN: r203450

10 years agore PR c++/58633 (ICE with decltype of destructor call)
Paolo Carlini [Fri, 11 Oct 2013 14:35:23 +0000 (14:35 +0000)]
re PR c++/58633 (ICE with decltype of destructor call)

/cp
2013-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58633
* parser.c (cp_parser_commit_to_topmost_tentative_parse): New.
(cp_parser_pseudo_destructor_name): Use it.

/testsuite
2013-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58633
* g++.dg/cpp0x/decltype57.C: New.

From-SVN: r203448

10 years agoc-common.h (omp_clause_mask::operator !=): New method.
Jakub Jelinek [Fri, 11 Oct 2013 14:34:18 +0000 (16:34 +0200)]
c-common.h (omp_clause_mask::operator !=): New method.

* c-common.h (omp_clause_mask::operator !=): New method.
* c-omp.c (c_omp_split_clauses): Use if ((mask & something) != 0)
instead of if (mask & something) tests everywhere.

From-SVN: r203447

10 years agore PR c++/31671 (Non-type template of type const ref accepted as a non-const ref)
Paolo Carlini [Fri, 11 Oct 2013 14:18:42 +0000 (14:18 +0000)]
re PR c++/31671 (Non-type template of type const ref accepted as a non-const ref)

/cp
2013-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/31671
* pt.c (convert_nontype_argument): Set expr_type to
TREE_TYPE (probe_type).

/testsuite
2013-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/31671
* g++.dg/template/nontype26.C: New.

From-SVN: r203444

10 years agosse.md (VI48F_256_512): New.
Alexander Ivchenko [Fri, 11 Oct 2013 14:05:40 +0000 (14:05 +0000)]
sse.md (VI48F_256_512): New.

        * config/i386/sse.md (VI48F_256_512): New.
        (avx2_permvar<mode>): Change to ...
        (<avx2_avx512f>_permvar<mode>): This.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203442

10 years agoi386.c (bdesc_args): Change corresponding pattern for __builtin_ia32_cvtps2dq...
Alexander Ivchenko [Fri, 11 Oct 2013 14:03:53 +0000 (14:03 +0000)]
i386.c (bdesc_args): Change corresponding pattern for __builtin_ia32_cvtps2dq...

        * config/i386/i386.c (bdesc_args): Change corresponding pattern  for
        __builtin_ia32_cvtps2dq, __builtin_ia32_cvtps2dq256.
        * config/i386/sse.md (VI4_AVX): New.
        (sf2simodelower): Ditto.
        (sse2_cvtps2dq): Change to ...
        (<sse2_avx_avx512f>_fix_notrunc<sf2simodelower><mode>): This.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203441

10 years agosse.md (V_512): New.
Alexander Ivchenko [Fri, 11 Oct 2013 14:02:07 +0000 (14:02 +0000)]
sse.md (V_512): New.

        * config/i386/sse.md (V_512): New.
        (VI_512): Ditto.
        (vcond<V_512:mode><VF_512:mode>): Ditto.
        (vcond<V_512:mode><VI_512:mode>): Ditto.
        (vcondu<V_512:mode><VI_512:mode>): Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203440

10 years agoi386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F.
Alexander Ivchenko [Fri, 11 Oct 2013 14:00:11 +0000 (14:00 +0000)]
i386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F.

        * config/i386/i386.c (ix86_rtx_costs): Enable fma for TARGET_AVX512F.
        * config/i386/sse.md (FMAMODEM): Changed modes and conditions.
        (FMAMODE): Ditto.
        (fma<mode>4): Removed condition.
        (fms<mode>4): Ditto.
        (fnma<mode>4): Ditto.
        (fnms<mode>4): Ditto.
        (fma4i_fmadd_<mode>): Ditto.
        (*fma_fmadd_<mode>): Ditto.
        (*fma_fmsub_<mode>): Ditto.
        (*fma_fnmadd_<mode>): Ditto.
        (*fma_fnmsub_<mode>): Ditto.
        (fmaddsub_<mode>): Allow for TARGET_AVX512F.
        (*fma_fmaddsub_<mode>): Ditto.
        (*fma_fmsubadd_<mode>): Ditto.
        (*fmai_fmadd_<mode>): Ditto.
        (*fmai_fmsub_<mode>): Ditto.
        (*fmai_fnmadd_<mode>): Ditto.
        (*fmai_fnmsub_<mode>): Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203439

10 years agosse.md (VI248_AVX2_8_AVX512F): New.
Alexander Ivchenko [Fri, 11 Oct 2013 13:55:10 +0000 (13:55 +0000)]
sse.md (VI248_AVX2_8_AVX512F): New.

        * config/i386/sse.md (VI248_AVX2_8_AVX512F): New.
        (VI124_256): Changed to ...
        (VI124_256_48_512): This.
        (ssepackmode): Extended with wider modes.
        (<code><mode>3): Changed iterator.
        (*avx2_<code><mode>3): Ditto.
        (vec_pack_trunc_<mode>): Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203437

10 years agosse.md (VI124_AVX2_48_AVX512F): New.
Alexander Ivchenko [Fri, 11 Oct 2013 13:53:01 +0000 (13:53 +0000)]
sse.md (VI124_AVX2_48_AVX512F): New.

        * config/i386/sse.md (VI124_AVX2_48_AVX512F): New.
        (VI8F_256_512): Ditto.
        (abs<mode>2): Changed iterator.
        (avx2_perm<mode>): Changed to ...
        (<avx2_avx512f>_perm<mode>): This.
        (avx2_perm<mode>_1): Changed to ...
        (<avx2_avx512f>_perm<mode>_1): This.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203436

10 years agosse.md (VI48_AVX512F): New.
Alexander Ivchenko [Fri, 11 Oct 2013 13:50:18 +0000 (13:50 +0000)]
sse.md (VI48_AVX512F): New.

        * config/i386/sse.md (VI48_AVX512F): New.
        (VI48_AVX2): Changed to ...
        (VI48_AVX2_48_AVX512F): This.
        (avx2_ashrv<mode>): Changed to ...
        (<avx2_avx512f>_ashrv<mode>): This.
        (avx2_<shift_insn>v<mode>): Changed to ...
        (<avx2_avx512f>_<shift_insn>v<mode>): This.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203435

10 years agosse.md (VI4_AVX512F): New.
Alexander Ivchenko [Fri, 11 Oct 2013 13:45:55 +0000 (13:45 +0000)]
sse.md (VI4_AVX512F): New.

        * config/i386/sse.md (VI4_AVX512F): New.
        (VI8_AVX2_AVX512F): Ditto.
        (mul<mode>3): Extended with wider modes.
        (*<sse4_1_avx2>_mul<mode>3): Ditto.
        (mul<mode>3): Ditto.
        (vec_widen_<s>mult_odd_<mode>): Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203434

10 years agosse.md (VI2_AVX512F): New.
Alexander Ivchenko [Fri, 11 Oct 2013 13:42:10 +0000 (13:42 +0000)]
sse.md (VI2_AVX512F): New.

        * config/i386/sse.md (VI2_AVX512F): New.
        (VI124_AVX512F): Ditto.
        (sseunpackmode): Extended with wider modes.
        (sseunpackfltmode): Ditto.
        (vec_unpacks_float_hi_<mode>): Ditto.
        (vec_unpacks_float_lo_<mode>): Ditto.
        (vec_unpacku_float_hi_<mode>): Ditto.
        (vec_unpacku_float_lo_<mode>): Ditto.
        (vec_unpacks_lo_<mode>): Ditto.
        (vec_unpacks_hi_<mode>): Ditto.
        (vec_unpacku_lo_<mode>): Ditto.
        (vec_unpacku_hi_<mode>): Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203433

10 years agoi386.md (multdiv): New.
Alexander Ivchenko [Fri, 11 Oct 2013 13:38:15 +0000 (13:38 +0000)]
i386.md (multdiv): New.

        * config/i386/i386.md (multdiv): New.
        (multdiv_mnemonic): Ditto.
        * config/i386/sse.md (<sse>_vmmul<mode>3): Changed to...
        (<sse>_vm<multdiv_mnemonic><mode>3): This.
        (<sse>_vmdiv<mode>3): Removed.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203432

10 years agosse.md (V): Extended with wider modes.
Alexander Ivchenko [Fri, 11 Oct 2013 13:35:00 +0000 (13:35 +0000)]
sse.md (V): Extended with wider modes.

       * config/i386/sse.md (V): Extended with wider modes.
        (VF2): Ditto.
        (ssehalfvecmode): Ditto.
        (i128): Ditto.
        (ssepackfltmode): Ditto.
        (avx_vec_concat<mode>): Ditto.
        (V_256_512): New iterator.
        (VF2_512_256): Ditto.
        (si2dfmode): New attribute.
        (si2dfmodelower): Ditto.
        (sf2dfmode): Ditto.
        (concat_tg_mode): Ditto.
        (floatv4siv4df2): Changed to ...
        (float<si2dfmodelower><mode>2): This.
        (avx_cvtps2pd256): Changed to ...
        (<sse2_avx_avx512f>_cvtps2pd<avxsizesuffix>): This.
        (vec_pack_trunc_v4df): Changed to ...
        (vec_pack_trunc_<mode>): This.
        (avx_vpermil<mode>): Changed to ...
        (<sse2_avx_avx512f>_vpermil<mode>): This.
        (<fixsuffix>fix_truncv8dfv8si2): New.
        (vec_pack_sfix_trunc_v8df): Ditto.
        (avx512f_rndscale<mode>): Ditto.
        (avx512f_roundpd512): Ditto.
        (vec_pack_ufix_trunc_<mode>): Updated iterator.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203431

10 years agoi386.md (any_fix): New iterator.
Alexander Ivchenko [Fri, 11 Oct 2013 13:00:40 +0000 (13:00 +0000)]
i386.md (any_fix): New iterator.

        * config/i386/i386.md (any_fix): New iterator.
        (fixsuffix): New attribute.
        * config/i386/sse.md (VF1): Extened with wider modes.
        (VI): Ditto.
        (VI_AVX2): Ditto.
        (VI8): Ditto.
        (sseintvecmodelower): Ditto.
        (ssescalarmode): Ditto.
        (ssescalarnum): Ditto.
        (VF1_128_256): New.
        (ssexmmmode): Ditto.
        (<fixsuffix>fix_truncv16sfv16si2): Ditto.
        (<sse>_rcp<mode>2): Change iterator.
        (rsqrt<mode>2): Ditto.
        (<sse>_rsqrt<mode>2): Ditto.
        (avx2_vec_dup<mode>): Ditto.
        (<sse4_1>_round<ssemodesuffix>_sfix<avxsizesuffix>): Ditto.
        (round<mode>2_sfix): Ditto.
        (avx2_pbroadcast<mode>): Ditto.
        (*andnot<mode>3): Handle XI mode.
        (*<code><mode>3): Ditto.
        (AVXTOSSEMODE): Removed.
        (avx_vpermil<mode>): Changed to ...
        (<sse2_avx_avx512f>_vpermil<mode>): This.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203429

10 years agosse.md (<sse2>_movnt<mode>): Update constraint to "v".
Alexander Ivchenko [Fri, 11 Oct 2013 12:53:24 +0000 (12:53 +0000)]
sse.md (<sse2>_movnt<mode>): Update constraint to "v".

        * config/i386/sse.md (<sse2>_movnt<mode>): Update constraint to "v".
        (<sse>_comi): Ditto.
        (<sse>_ucomi): Ditto.
        (sse_cvtss2siq_2): Ditto.
        (sse2_cvtsd2si): Ditto.
        (sse2_cvtsd2siq): Ditto.
        (sse2_cvttsd2si): Ditto.
        (sse2_cvttsd2siq): Ditto.
        (<shift_insn><mode>3): Ditto.
        (sse2_cvtsi2sdq): Update constraint and prefix.
        (sse_cvtsi2ss): Update prefix.
        (sse_cvtsi2ssq): Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com>
From-SVN: r203428

10 years agotree-vrp.c (infer_nonnull_range): Use is_gimple_call, ignore internal calls.
Jakub Jelinek [Fri, 11 Oct 2013 12:45:41 +0000 (14:45 +0200)]
tree-vrp.c (infer_nonnull_range): Use is_gimple_call, ignore internal calls.

* tree-vrp.c (infer_nonnull_range): Use is_gimple_call,
ignore internal calls.

From-SVN: r203427

10 years agotree-pretty-print.c (dump_generic_node): Allow to dump both (D) and (ab) for SSA_NAMEs.
Richard Biener [Fri, 11 Oct 2013 11:28:49 +0000 (11:28 +0000)]
tree-pretty-print.c (dump_generic_node): Allow to dump both (D) and (ab) for SSA_NAMEs.

2013-10-11  Richard Biener  <rguenther@suse.de>

* tree-pretty-print.c (dump_generic_node): Allow to dump
both (D) and (ab) for SSA_NAMEs.  Mark INTEGER_CSTs with
(OVF) if TREE_OVERFLOW is set.

From-SVN: r203426

10 years agoAdding missing dg-require-atomic-builtins to libstdc++ test case.
Marcus Shawcroft [Fri, 11 Oct 2013 11:15:01 +0000 (11:15 +0000)]
Adding missing dg-require-atomic-builtins to libstdc++ test case.

From-SVN: r203425

10 years agoforce-parallel-1.c: Expect 4 instead of 5 loopfn matches.
Thomas Schwinge [Fri, 11 Oct 2013 10:43:59 +0000 (12:43 +0200)]
force-parallel-1.c: Expect 4 instead of 5 loopfn matches.

libgomp/
* testsuite/libgomp.graphite/force-parallel-1.c: Expect 4 instead
of 5 loopfn matches.
* testsuite/libgomp.graphite/force-parallel-2.c: Likewise.
* testsuite/libgomp.graphite/force-parallel-3.c: Likewise.
* testsuite/libgomp.graphite/force-parallel-4.c: Likewise.
* testsuite/libgomp.graphite/force-parallel-5.c: Likewise.
* testsuite/libgomp.graphite/force-parallel-6.c: Likewise.
* testsuite/libgomp.graphite/force-parallel-7.c: Likewise.
* testsuite/libgomp.graphite/force-parallel-8.c: Likewise.
* testsuite/libgomp.graphite/force-parallel-9.c: Likewise.

As changed in gomp-4_0-branch, r203282.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r203424

10 years agoMakefile.am (omp_lib.mod): Streamline rule.
Thomas Schwinge [Fri, 11 Oct 2013 10:43:48 +0000 (12:43 +0200)]
Makefile.am (omp_lib.mod): Streamline rule.

libgomp/
* Makefile.am (omp_lib.mod): Streamline rule.

From-SVN: r203423

10 years agogcc_update (files_and_dependencies): Fix rule for libgomp/testsuite/Makefile.in.
Thomas Schwinge [Fri, 11 Oct 2013 10:43:36 +0000 (12:43 +0200)]
gcc_update (files_and_dependencies): Fix rule for libgomp/testsuite/Makefile.in.

contrib/
* gcc_update (files_and_dependencies): Fix rule for
libgomp/testsuite/Makefile.in.

From-SVN: r203422

10 years agolibgomp.texi (Runtime Library Routines): C linkage, don't throw exceptions.
Thomas Schwinge [Fri, 11 Oct 2013 10:43:26 +0000 (12:43 +0200)]
libgomp.texi (Runtime Library Routines): C linkage, don't throw exceptions.

libgomp/
* libgomp.texi (Runtime Library Routines): C linkage, don't throw
exceptions.

From-SVN: r203421

10 years agolib-1.c (main): Add missing error check.
Thomas Schwinge [Fri, 11 Oct 2013 10:43:15 +0000 (12:43 +0200)]
lib-1.c (main): Add missing error check.

libgomp/
* testsuite/libgomp.c/lib-1.c (main): Add missing error check.
* testsuite/libgomp.fortran/lib1.f90: Likewise.
* testsuite/libgomp.fortran/lib2.f: Likewise.
* testsuite/libgomp.fortran/lib3.f: Likewise.

From-SVN: r203420

10 years agotree.h (OMP_CLAUSE_CODE): Remove duplicate definition.
Thomas Schwinge [Fri, 11 Oct 2013 10:43:04 +0000 (12:43 +0200)]
tree.h (OMP_CLAUSE_CODE): Remove duplicate definition.

gcc/
* tree.h (OMP_CLAUSE_CODE): Remove duplicate definition.

From-SVN: r203419

10 years agoconfigure.ac: Typo fix.
Thomas Schwinge [Fri, 11 Oct 2013 10:42:53 +0000 (12:42 +0200)]
configure.ac: Typo fix.

libgomp/
* configure.ac: Typo fix.

From-SVN: r203418

10 years ago_OPENMP pre-processor checks, openmp_version Fortran instrinsic checks.
Thomas Schwinge [Fri, 11 Oct 2013 10:42:42 +0000 (12:42 +0200)]
_OPENMP pre-processor checks, openmp_version Fortran instrinsic checks.

gcc/testsuite/
* c-c++-common/cpp/openmp-define-1.c: New file.
* c-c++-common/cpp/openmp-define-2.c: Likewise.
* c-c++-common/cpp/openmp-define-3.c: Likewise.
* gfortran.dg/openmp-define-1.f90: Likewise.
* gfortran.dg/openmp-define-2.f90: Likewise.
* gfortran.dg/openmp-define-3.f90: Likewise.
libgomp/
* testsuite/libgomp.fortran/openmp_version-1.f: New file.
* testsuite/libgomp.fortran/openmp_version-2.f90: Likewise.

From-SVN: r203417

10 years agogomp.exp: Recurse into subdirectories when looking for test source files.
Thomas Schwinge [Fri, 11 Oct 2013 10:42:29 +0000 (12:42 +0200)]
gomp.exp: Recurse into subdirectories when looking for test source files.

gcc/testsuite/
* g++.dg/gomp/gomp.exp: Recurse into subdirectories when looking
for test source files.
* gcc.dg/gomp/gomp.exp: Likewise.
* gcc.dg/gomp/appendix-a/a.35.1.c: Expect error.
* gcc.dg/gomp/appendix-a/a.35.3.c: Likewise.
* gcc.dg/gomp/appendix-a/a.35.4.c: Likewise.
* gcc.dg/gomp/appendix-a/a.35.5.c: Likewise.
* gcc.dg/gomp/appendix-a/a.35.6.c: Likewise.

From-SVN: r203416

10 years agogimple.c: GIMPLE statements have subcodes, not sub-codes.
Thomas Schwinge [Fri, 11 Oct 2013 10:42:17 +0000 (12:42 +0200)]
gimple.c: GIMPLE statements have subcodes, not sub-codes.

gcc/
* gimple.c: GIMPLE statements have subcodes, not sub-codes.
* gimple.h: Likewise.

From-SVN: r203415

10 years agogeneric.texi (OpenMP): OMP_CLAUSE_* are subcodes, not sub-codes.
Thomas Schwinge [Fri, 11 Oct 2013 10:42:06 +0000 (12:42 +0200)]
generic.texi (OpenMP): OMP_CLAUSE_* are subcodes, not sub-codes.

gcc/
* doc/generic.texi (OpenMP): OMP_CLAUSE_* are subcodes, not
sub-codes.

From-SVN: r203414

10 years agogeneric.texi (Adding new DECL node types): Explain *_CHECK macros.
Thomas Schwinge [Fri, 11 Oct 2013 10:41:56 +0000 (12:41 +0200)]
generic.texi (Adding new DECL node types): Explain *_CHECK macros.

gcc/
* doc/generic.texi (Adding new DECL node types): Explain *_CHECK
macros.

From-SVN: r203413

10 years agogimple.texi (is_gimple_omp): Move into the correct section.
Thomas Schwinge [Fri, 11 Oct 2013 10:41:44 +0000 (12:41 +0200)]
gimple.texi (is_gimple_omp): Move into the correct section.

gcc/
* doc/gimple.texi (is_gimple_omp): Move into the correct section.

From-SVN: r203412

10 years agoomp.h.in: Don't touch the user's namespace.
Thomas Schwinge [Fri, 11 Oct 2013 10:41:34 +0000 (12:41 +0200)]
omp.h.in: Don't touch the user's namespace.

libgomp/
* omp.h.in: Don't touch the user's namespace.

From-SVN: r203411

10 years agoacinclude.m4 (gcc_GAS_FLAGS): Add more gcc_cv_as_flags overrides.
Thomas Schwinge [Fri, 11 Oct 2013 10:41:22 +0000 (12:41 +0200)]
acinclude.m4 (gcc_GAS_FLAGS): Add more gcc_cv_as_flags overrides.

gcc/
* acinclude.m4 (gcc_GAS_FLAGS): Add more gcc_cv_as_flags
overrides.

From-SVN: r203410

10 years agotarget.c: New file.
Jakub Jelinek [Fri, 11 Oct 2013 09:26:50 +0000 (11:26 +0200)]
target.c: New file.

libgomp/
* target.c: New file.
* Makefile.am (libgomp_la_SOURCES): Add target.c.
* Makefile.in: Regenerated.
* libgomp_g.h (GOMP_task): Add depend argument.
(GOMP_barrier_cancel, GOMP_loop_end_cancel,
GOMP_sections_end_cancel, GOMP_target, GOMP_target_data,
GOMP_target_end_data, GOMP_target_update, GOMP_teams,
GOMP_parallel_loop_static, GOMP_parallel_loop_dynamic,
GOMP_parallel_loop_guided, GOMP_parallel_loop_runtime,
GOMP_parallel, GOMP_cancel, GOMP_cancellation_point,
GOMP_taskgroup_start, GOMP_taskgroup_end,
GOMP_parallel_sections): New prototypes.
* fortran.c (omp_is_initial_device): Add ialias_redirect.
(omp_is_initial_device_): New function.
(ULP, STR1, STR2, ialias_redirect): Removed.
(omp_get_cancellation_, omp_get_proc_bind_, omp_set_default_device_,
omp_set_default_device_8_, omp_get_default_device_,
omp_get_num_devices_, omp_get_num_teams_, omp_get_team_num_): New
functions.
* libgomp.map (GOMP_barrier_cancel, GOMP_loop_end_cancel,
GOMP_sections_end_cancel, GOMP_target, GOMP_target_data,
GOMP_target_end_data, GOMP_target_update, GOMP_teams): Export
@@GOMP_4.0.
(omp_is_initial_device, omp_is_initial_device_, omp_get_cancellation,
omp_get_cancellation_, omp_get_proc_bind, omp_get_proc_bind_,
omp_set_default_device, omp_set_default_device_,
omp_set_default_device_8_, omp_get_default_device,
omp_get_default_device_, omp_get_num_devices, omp_get_num_devices_,
omp_get_num_teams, omp_get_num_teams_, omp_get_team_num,
omp_get_team_num_): Export @@OMP_4.0.
* team.c (struct gomp_thread_start_data): Add place field.
(gomp_thread_start): Clear thr->thread_pool and
thr->task before returning.  Use gomp_team_barrier_wait_final
instead of gomp_team_barrier_wait.  Initialize thr->place.
(gomp_new_team): Initialize work_shares_to_free, work_share_cancelled,
team_cancelled and task_queued_count fields.
(gomp_free_pool_helper): Clear thr->thread_pool and thr->task
before calling pthread_exit.
(gomp_free_thread): No longer static.  Use
gomp_managed_threads_lock instead of gomp_remaining_threads_lock.
(gomp_team_start): Add flags argument.  Set
thr->thread_pool->threads_busy to nthreads immediately after creating
new pool.  Use gomp_managed_threads_lock instead of
gomp_remaining_threads_lock.  Handle OpenMP 4.0 affinity.
(gomp_team_end): Use gomp_managed_threads_lock instead of
gomp_remaining_threads_lock.  Use gomp_team_barrier_wait_final instead
of gomp_team_barrier_wait.  If team->team_cancelled, call
gomp_fini_worshare on ws chain starting at team->work_shares_to_free
rather than thr->ts.work_share.
(initialize_team): Don't call gomp_sem_init here.
* sections.c (GOMP_parallel_sections_start): Adjust gomp_team_start
caller.
(GOMP_parallel_sections, GOMP_sections_end_cancel): New functions.
* env.c (gomp_global_icv): Add default_device_var, target_data and
bind_var initializers.
(gomp_cpu_affinity, gomp_cpu_affinity_len): Remove.
(gomp_bind_var_list, gomp_bind_var_list_len, gomp_places_list,
gomp_places_list_len): New variables.
(parse_bind_var, parse_one_place, parse_places_var): New functions.
(parse_affinity): Rewritten to construct OMP_PLACES list with unit
sized places.
(gomp_cancel_var): New global variable.
(parse_int): New function.
(handle_omp_display_env): New function.
(initialize_env): Use it.  Initialize default_device_var.
Parse OMP_CANCELLATION env var.  Use parse_bind_var to parse
OMP_PROC_BIND instead of parse_boolean.  Use parse_places_var for
OMP_PLACES parsing.  Don't call parse_affinity if OMP_PLACES has
been successfully parsed (and call gomp_init_affinity in that case).
(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
omp_get_team_num, omp_is_initial_device): New functions.
* libgomp.h: Include stdlib.h.
(ialias_ulp, ialias_str1, ialias_str2, ialias_redirect, ialias_call):
Define.
(struct target_mem_desc): Forward declare.
(struct gomp_task_icv): Add default_device_var, target_data, bind_var
and thread_limit_var fields.
(gomp_get_num_devices): New prototype.
(gomp_cancel_var): New extern decl.
(struct gomp_team): Add work_shares_to_free, work_share_cancelled,
team_cancelled and task_queued_count fields.  Add comments about
task_{,queued_,running_}count.
(gomp_cancel_kind): New enum.
(gomp_work_share_end_cancel): New prototype.
(struct gomp_task): Add next_taskgroup, prev_taskgroup, taskgroup,
copy_ctors_done, dependers, depend_hash, depend_count, num_dependees
and depend fields.
(struct gomp_taskgroup): New type.
(struct gomp_task_depend_entry,
struct gomp_dependers_vec): New types.
(gomp_finish_task): Free depend_hash if non-NULL.
(struct gomp_team_state): Add place_partition_off
and place_partition_len fields.
(gomp_bind_var_list, gomp_bind_var_list_len, gomp_places_list,
gomp_places_list_len): New extern decls.
(struct gomp_thread): Add place field.
(gomp_cpu_affinity, gomp_cpu_affinity_len): Remove.
(gomp_init_thread_affinity): Add place argument.
(gomp_affinity_alloc, gomp_affinity_init_place, gomp_affinity_add_cpus,
gomp_affinity_remove_cpu, gomp_affinity_copy_place,
gomp_affinity_same_place, gomp_affinity_finalize_place_list,
gomp_affinity_init_level, gomp_affinity_print_place): New
prototypes.
(gomp_team_start): Add flags argument.
(gomp_thread_limit_var, gomp_remaining_threads_count,
gomp_remaining_threads_lock): Remove.
(gomp_managed_threads_lock): New variable.
(struct gomp_thread_pool): Add threads_busy field.
(gomp_free_thread): New prototype.
* task.c: Include hashtab.h.
(hash_entry_type): New typedef.
(htab_alloc, htab_free, htab_hash, htab_eq): New inlines.
(gomp_init_task): Clear dependers, depend_hash, depend_count,
copy_ctors_done and taskgroup fields.
(GOMP_task): Add depend argument, handle depend clauses.  If
gomp_team_barrier_cancelled or if it's taskgroup has been
cancelled, don't queue or start new tasks.  Set copy_ctors_done
field if needed.  Initialize taskgroup field.  If copy_ctors_done
and already cancelled, don't discard the task.  If taskgroup is
non-NULL, enqueue the task into taskgroup queue.  Increment
num_children field in taskgroup.  Increment task_queued_count.
(gomp_task_run_pre, gomp_task_run_post_remove_parent,
gomp_task_run_post_remove_taskgroup): New inline functions.
(gomp_task_run_post_handle_depend_hash,
gomp_task_run_post_handle_dependers,
gomp_task_run_post_handle_depend): New functions.
(GOMP_taskwait): Use them.  If more than one new tasks
have been queued, wake other threads if needed.
(gomp_barrier_handle_tasks): Likewise.  If
gomp_team_barrier_cancelled, don't start any new tasks, just free
all tasks.
(GOMP_taskgroup_start, GOMP_taskgroup_end): New functions.
* omp_lib.f90.in
(omp_proc_bind_kind, omp_proc_bind_false,
omp_proc_bind_true, omp_proc_bind_master, omp_proc_bind_close,
omp_proc_bind_spread): New params.
(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
omp_get_team_num, omp_is_initial_device): New interfaces.
(omp_get_dynamic, omp_get_nested, omp_in_parallel,
omp_get_max_threads, omp_get_num_procs, omp_get_num_threads,
omp_get_thread_num, omp_get_thread_limit, omp_set_max_active_levels,
omp_get_max_active_levels, omp_get_level, omp_get_ancestor_thread_num,
omp_get_team_size, omp_get_active_level, omp_in_final): Remove
useless use omp_lib_kinds.
* omp.h.in (omp_proc_bind_t): New typedef.
(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
omp_get_team_num, omp_is_initial_device): New prototypes.
* loop.c (gomp_parallel_loop_start): Add flags argument, pass it
through to gomp_team_start.
(GOMP_parallel_loop_static_start, GOMP_parallel_loop_dynamic_start,
GOMP_parallel_loop_guided_start, GOMP_parallel_loop_runtime_start):
Adjust gomp_parallel_loop_start callers.
(GOMP_parallel_loop_static, GOMP_parallel_loop_dynamic,
GOMP_parallel_loop_guided, GOMP_parallel_loop_runtime,
GOMP_loop_end_cancel): New functions.
(GOMP_parallel_end): Add ialias_redirect.
* hashtab.h: New file.
* libgomp.texi (Environment Variables): Minor cleanup,
update section refs to OpenMP 4.0rc2.
(OMP_DISPLAY_ENV, GOMP_SPINCOUNT): Document these
environment variables.
* work.c (gomp_work_share_end, gomp_work_share_end_nowait): Set
team->work_shares_to_free to thr->ts.work_share before calling
free_work_share.
(gomp_work_share_end_cancel): New function.
* config/linux/proc.c: Include errno.h.
(gomp_get_cpuset_size, gomp_cpuset_size, gomp_cpusetp): New variables.
(gomp_cpuset_popcount): Add cpusetsize argument, use it instead of
sizeof (cpu_set_t) to determine number of iterations.  Fix up check
extern decl.  Use CPU_COUNT_S if available, or CPU_COUNT if
gomp_cpuset_size is sizeof (cpu_set_t).
(gomp_init_num_threads): Initialize gomp_cpuset_size,
gomp_get_cpuset_size and gomp_cpusetp here, use gomp_cpusetp instead
of &cpuset and pass gomp_cpuset_size instead of sizeof (cpu_set_t)
to pthread_getaffinity_np.  Free and clear gomp_cpusetp if it didn't
contain any logical CPUs.
(get_num_procs): Don't call pthread_getaffinity_np if gomp_cpusetp
is NULL.  Use gomp_cpusetp instead of &cpuset and pass
gomp_get_cpuset_size instead of sizeof (cpu_set_t) to
pthread_getaffinity_np.  Check gomp_places_list instead of
gomp_cpu_affinity.  Adjust gomp_cpuset_popcount caller.
* config/linux/bar.c (gomp_barrier_wait_end,
gomp_barrier_wait_last): Use BAR_* defines.
(gomp_team_barrier_wait_end): Likewise.  Clear BAR_CANCELLED
from state where needed.  Set work_share_cancelled to 0 on last
thread.
(gomp_team_barrier_wait_final, gomp_team_barrier_wait_cancel_end,
gomp_team_barrier_wait_cancel, gomp_team_barrier_cancel): New
functions.
* config/linux/proc.h (gomp_cpuset_popcount): Add attribute_hidden.
Add cpusetsize argument.
(gomp_cpuset_size, gomp_cpusetp): Declare.
* config/linux/affinity.c: Include errno.h, stdio.h and string.h.
(affinity_counter): Remove.
(CPU_ISSET_S, CPU_ZERO_S, CPU_SET_S, CPU_CLR_S): Define
if CPU_ALLOC_SIZE isn't defined.
(gomp_init_affinity): Rewritten, if gomp_places_list is NULL, try
silently create OMP_PLACES=threads, if it is non-NULL afterwards,
bind current thread to the first place.
(gomp_init_thread_affinity): Rewritten.  Add place argument, just
pthread_setaffinity_np to gomp_places_list[place].
(gomp_affinity_alloc, gomp_affinity_init_place, gomp_affinity_add_cpus,
gomp_affinity_remove_cpu, gomp_affinity_copy_place,
gomp_affinity_same_place, gomp_affinity_finalize_place_list,
gomp_affinity_init_level, gomp_affinity_print_place): New functions.
* config/linux/bar.h (BAR_TASK_PENDING, BAR_WAS_LAST,
BAR_WAITING_FOR_TASK, BAR_INCR, BAR_CANCELLED): Define.
(gomp_barrier_t): Add awaited_final field.
(gomp_barrier_init): Initialize awaited_final field.
(gomp_team_barrier_wait_final, gomp_team_barrier_wait_cancel,
gomp_team_barrier_wait_cancel_end, gomp_team_barrier_cancel): New
prototypes.
(gomp_barrier_wait_start): Preserve BAR_CANCELLED bit.  Use BAR_*
defines.
(gomp_barrier_wait_cancel_start, gomp_team_barrier_wait_final_start,
gomp_team_barrier_cancelled): New inline functions.
(gomp_barrier_last_thread,
gomp_team_barrier_set_task_pending,
gomp_team_barrier_clear_task_pending,
gomp_team_barrier_set_waiting_for_tasks,
gomp_team_barrier_waiting_for_tasks,
gomp_team_barrier_done): Use BAR_* defines.
* config/posix/bar.c (gomp_barrier_init): Clear cancellable field.
(gomp_barrier_wait_end): Use BAR_* defines.
(gomp_team_barrier_wait_end): Clear BAR_CANCELLED from state.
Set work_share_cancelled to 0 on last thread, use __atomic_load_n.
Use BAR_* defines.
(gomp_team_barrier_wait_cancel_end, gomp_team_barrier_wait_cancel,
gomp_team_barrier_cancel): New functions.
* config/posix/affinity.c (gomp_init_thread_affinity): Add place
argument.
(gomp_affinity_alloc, gomp_affinity_init_place, gomp_affinity_add_cpus,
gomp_affinity_remove_cpu, gomp_affinity_copy_place,
gomp_affinity_same_place, gomp_affinity_finalize_place_list,
gomp_affinity_init_level, gomp_affinity_print_place): New stubs.
* config/posix/bar.h (BAR_TASK_PENDING, BAR_WAS_LAST,
BAR_WAITING_FOR_TASK, BAR_INCR, BAR_CANCELLED): Define.
(gomp_barrier_t): Add cancellable field.
(gomp_team_barrier_wait_cancel, gomp_team_barrier_wait_cancel_end,
gomp_team_barrier_cancel): New prototypes.
(gomp_barrier_wait_start): Preserve BAR_CANCELLED bit.
(gomp_barrier_wait_cancel_start, gomp_team_barrier_wait_final,
gomp_team_barrier_cancelled): New inline functions.
(gomp_barrier_wait_start, gomp_barrier_last_thread,
gomp_team_barrier_set_task_pending,
gomp_team_barrier_clear_task_pending,
gomp_team_barrier_set_waiting_for_tasks,
gomp_team_barrier_waiting_for_tasks,
gomp_team_barrier_done): Use BAR_* defines.
* barrier.c (GOMP_barrier_cancel): New function.
* omp_lib.h.in (omp_proc_bind_kind, omp_proc_bind_false,
omp_proc_bind_true, omp_proc_bind_master, omp_proc_bind_close,
omp_proc_bind_spread): New params.
(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
omp_get_team_num, omp_is_initial_device): New externals.
* parallel.c (GOMP_parallel, GOMP_cancel, GOMP_cancellation_point):
New functions.
(gomp_resolve_num_threads): Adjust for thread_limit now being in
icv->thread_limit_var.  Use UINT_MAX instead of ULONG_MAX as
infinity.  If not nested, just return minimum of max_num_threads
and icv->thread_limit_var and if thr->thread_pool, set threads_busy
to the returned value.  Otherwise, don't update atomically
gomp_remaining_threads_count, but instead thr->thread_pool->threads_busy.
(GOMP_parallel_end): Adjust for thread_limit now being in
icv->thread_limit_var.  Use UINT_MAX instead of ULONG_MAX as
infinity.  Adjust threads_busy in the pool rather than
gomp_remaining_threads_count.  Remember team->nthreads and call
gomp_team_end before adjusting threads_busy, if not nested
afterwards, just set it to 1 non-atomically.  Add ialias.
(GOMP_parallel_start): Adjust gomp_team_start caller.
* testsuite/libgomp.c/atomic-14.c: Add parens to make it valid.
* testsuite/libgomp.c/affinity-1.c: New test.
* testsuite/libgomp.c/atomic-15.c: New test.
* testsuite/libgomp.c/atomic-16.c: New test.
* testsuite/libgomp.c/atomic-17.c: New test.
* testsuite/libgomp.c/cancel-for-1.c: New test.
* testsuite/libgomp.c/cancel-for-2.c: New test.
* testsuite/libgomp.c/cancel-parallel-1.c: New test.
* testsuite/libgomp.c/cancel-parallel-2.c: New test.
* testsuite/libgomp.c/cancel-parallel-3.c: New test.
* testsuite/libgomp.c/cancel-sections-1.c: New test.
* testsuite/libgomp.c/cancel-taskgroup-1.c: New test.
* testsuite/libgomp.c/cancel-taskgroup-2.c: New test.
* testsuite/libgomp.c/depend-1.c: New test.
* testsuite/libgomp.c/depend-2.c: New test.
* testsuite/libgomp.c/depend-3.c: New test.
* testsuite/libgomp.c/depend-4.c: New test.
* testsuite/libgomp.c/for-1.c: New test.
* testsuite/libgomp.c/for-1.h: New file.
* testsuite/libgomp.c/for-2.c: New test.
* testsuite/libgomp.c/for-2.h: New file.
* testsuite/libgomp.c/for-3.c: New test.
* testsuite/libgomp.c/pr58392.c: New test.
* testsuite/libgomp.c/simd-1.c: New test.
* testsuite/libgomp.c/simd-2.c: New test.
* testsuite/libgomp.c/simd-3.c: New test.
* testsuite/libgomp.c/simd-4.c: New test.
* testsuite/libgomp.c/simd-5.c: New test.
* testsuite/libgomp.c/simd-6.c: New test.
* testsuite/libgomp.c/target-1.c: New test.
* testsuite/libgomp.c/target-2.c: New test.
* testsuite/libgomp.c/target-3.c: New test.
* testsuite/libgomp.c/target-4.c: New test.
* testsuite/libgomp.c/target-5.c: New test.
* testsuite/libgomp.c/target-6.c: New test.
* testsuite/libgomp.c/target-7.c: New test.
* testsuite/libgomp.c/taskgroup-1.c: New test.
* testsuite/libgomp.c/thread-limit-1.c: New test.
* testsuite/libgomp.c/thread-limit-2.c: New test.
* testsuite/libgomp.c/thread-limit-3.c: New test.
* testsuite/libgomp.c/udr-1.c: New test.
* testsuite/libgomp.c/udr-2.c: New test.
* testsuite/libgomp.c/udr-3.c: New test.
* testsuite/libgomp.c++/affinity-1.C: New test.
* testsuite/libgomp.c++/atomic-10.C: New test.
* testsuite/libgomp.c++/atomic-11.C: New test.
* testsuite/libgomp.c++/atomic-12.C: New test.
* testsuite/libgomp.c++/atomic-13.C: New test.
* testsuite/libgomp.c++/atomic-14.C: New test.
* testsuite/libgomp.c++/atomic-15.C: New test.
* testsuite/libgomp.c++/cancel-for-1.C: New test.
* testsuite/libgomp.c++/cancel-for-2.C: New test.
* testsuite/libgomp.c++/cancel-parallel-1.C: New test.
* testsuite/libgomp.c++/cancel-parallel-2.C: New test.
* testsuite/libgomp.c++/cancel-parallel-3.C: New test.
* testsuite/libgomp.c++/cancel-sections-1.C: New test.
* testsuite/libgomp.c++/cancel-taskgroup-1.C: New test.
* testsuite/libgomp.c++/cancel-taskgroup-2.C: New test.
* testsuite/libgomp.c++/cancel-taskgroup-3.C: New test.
* testsuite/libgomp.c++/cancel-test.h: New file.
* testsuite/libgomp.c++/for-9.C: New test.
* testsuite/libgomp.c++/for-10.C: New test.
* testsuite/libgomp.c++/for-11.C: New test.
* testsuite/libgomp.c++/simd-1.C: New test.
* testsuite/libgomp.c++/simd-2.C: New test.
* testsuite/libgomp.c++/simd-3.C: New test.
* testsuite/libgomp.c++/simd-4.C: New test.
* testsuite/libgomp.c++/simd-5.C: New test.
* testsuite/libgomp.c++/simd-6.C: New test.
* testsuite/libgomp.c++/simd-7.C: New test.
* testsuite/libgomp.c++/simd-8.C: New test.
* testsuite/libgomp.c++/target-1.C: New test.
* testsuite/libgomp.c++/target-2.C: New test.
* testsuite/libgomp.c++/target-2-aux.cc: New file.
* testsuite/libgomp.c++/target-3.C: New test.
* testsuite/libgomp.c++/taskgroup-1.C: New test.
* testsuite/libgomp.c++/udr-1.C: New test.
* testsuite/libgomp.c++/udr-2.C: New test.
* testsuite/libgomp.c++/udr-3.C: New test.
* testsuite/libgomp.c++/udr-4.C: New test.
* testsuite/libgomp.c++/udr-5.C: New test.
* testsuite/libgomp.c++/udr-6.C: New test.
* testsuite/libgomp.c++/udr-7.C: New test.
* testsuite/libgomp.c++/udr-8.C: New test.
* testsuite/libgomp.c++/udr-9.C: New test.
gcc/
* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__LOOPTEMP_
and new OpenMP 4.0 clauses, handle UDR OMP_CLAUSE_REDUCTION,
formatting fixes, use pp_colon instead of pp_character (..., ':'),
similarly pp_right_paren.
(dump_generic_node): Handle OMP_DISTRIBUTE, OMP_TEAMS,
OMP_TARGET_DATA, OMP_TARGET, OMP_TARGET_UPDATE, OMP_TASKGROUP,
allow OMP_FOR_INIT to be NULL, handle OMP_ATOMIC_SEQ_CST.
* tree.c (omp_clause_num_ops, omp_clause_code_name): Add OpenMP 4.0
clauses.
(omp_declare_simd_clauses_equal,
omp_remove_redundant_declare_simd_attrs): New functions.
(attribute_value_equal): Use omp_declare_simd_clauses_equal.
(walk_tree_1): Handle new OpenMP 4.0 clauses.
* tree.h (OMP_LOOP_CHECK): Define.
(OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_INIT, OMP_FOR_COND,
OMP_FOR_INCR, OMP_FOR_PRE_BODY): Use it.
(OMP_TASKGROUP_BODY, OMP_TEAMS_BODY, OMP_TEAMS_CLAUSES,
OMP_TARGET_DATA_BODY, OMP_TARGET_DATA_CLAUSES, OMP_TARGET_BODY,
OMP_TARGET_CLAUSES, OMP_TARGET_UPDATE_CLAUSES, OMP_CLAUSE_SIZE,
OMP_ATOMIC_SEQ_CST, OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND,
OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION, OMP_CLAUSE_PROC_BIND_KIND,
OMP_CLAUSE_REDUCTION_OMP_ORIG_REF, OMP_CLAUSE_ALIGNED_ALIGNMENT,
OMP_CLAUSE_NUM_TEAMS_EXPR, OMP_CLAUSE_THREAD_LIMIT_EXPR,
OMP_CLAUSE_DEVICE_ID, OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR,
OMP_CLAUSE_SIMDLEN_EXPR): Define.
(OMP_CLAUSE_DECL): Change range up to OMP_CLAUSE__LOOPTEMP_.
(omp_remove_redundant_declare_simd_attrs): New prototype.
* gimple.def (GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET,
GIMPLE_OMP_TEAMS): New codes.
(GIMPLE_OMP_RETURN): Use GSS_OMP_ATOMIC_STORE instead of GSS_BASE.
* omp-low.c (struct omp_context): Add cancel_label and cancellable
fields.
(target_nesting_level): New variable.
(extract_omp_for_data): Handle GF_OMP_FOR_KIND_DISTRIBUTE and
OMP_CLAUSE_DIST_SCHEDULE.  Don't fallback to library implementation
for collapse > 1 static schedule unless ordered.
(get_ws_args_for): Add par_stmt argument.  Handle combined loops.
(determine_parallel_type): Adjust get_ws_args_for caller.
(install_var_field): Handle mask & 4 for double indirection.
(scan_sharing_clauses): Ignore shared clause on teams construct.
Handle OMP_CLAUSE__LOOPTEMP_ and new OpenMP 4.0 clauses.
(create_omp_child_function): If inside target or declare target
constructs, set "omp declare target" attribute on the child
function.
(find_combined_for): New function.
(scan_omp_parallel): Handle combined loops.
(scan_omp_target, scan_omp_teams): New functions.
(check_omp_nesting_restrictions): Check new OpenMP 4.0 nesting
restrictions and set ctx->cancellable for cancellable constructs.
(scan_omp_1_stmt): Call check_omp_nesting_restrictions also on
selected builtin calls.  Handle GIMPLE_OMP_TASKGROUP,
GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS.
(build_omp_barrier): Add lhs argument, return gimple rather than
tree.
(omp_clause_aligned_alignment): New function.
(lower_rec_simd_input_clauses): Only call SET_DECL_VALUE_EXPR
on decls.
(lower_rec_input_clauses): Add FD argument.  Ignore shared clauses
on teams constructs.  Handle user defined reductions and new
OpenMP 4.0 clauses.
(lower_reduction_clauses): Don't set placeholder to address of ref
if it has already the right type.
(lower_send_clauses): Handle OMP_CLAUSE__LOOPTEMP_.
(expand_parallel_call): Use the new non-_start suffixed builtins,
handle OMP_CLAUSE_PROC_BIND, don't call the outlined function
and GOMP_parallel_end after the call.
(expand_task_call): Handle OMP_CLAUSE_DEPEND.
(expand_omp_for_init_counts): Handle combined loops.
(expand_omp_for_init_vars): Add inner_stmt argument, handle combined
loops.
(expand_omp_for_generic): Likewise.  Use GOMP_loop_end_cancel at the
end of cancellable loops.
(expand_omp_for_static_nochunk, expand_omp_for_static_chunk):
Likewise.  Handle collapse > 1 loops.
(expand_omp_simd): Handle combined loops.
(expand_omp_for): Add inner_stmt argument, adjust callers of
expand_omp_for* functions, use expand_omp_for_static*chunk even
for collapse > 1 unless ordered.
(expand_omp_sections): Use GOMP_sections_end_cancel at the end
of cancellable sections.
(expand_omp_single): Remove need_barrier variable, just rely on
gimple_omp_return_nowait_p.  Adjust build_omp_barrier caller.
(expand_omp_synch): Allow GIMPLE_OMP_TASKGROUP and GIMPLE_OMP_TEAMS.
(expand_omp_atomic_load, expand_omp_atomic_store,
expand_omp_atomic_fetch_op): Handle gimple_omp_atomic_seq_cst_p.
(expand_omp_target): New function.
(expand_omp): Handle combined loops.  Handle GIMPLE_OMP_TASKGROUP,
GIMPLE_OMP_TEAMS, GIMPLE_OMP_TARGET.
(build_omp_regions_1): Immediately close region for
GF_OMP_TARGET_KIND_UPDATE.
(maybe_add_implicit_barrier_cancel): New function.
(lower_omp_sections): Adjust lower_rec_input_clauses caller.  Handle
cancellation.
(lower_omp_single): Likewise.  Add clobber after the barrier.
(lower_omp_taskgroup): New function.
(lower_omp_for): Handle combined loops.  Adjust
lower_rec_input_clauses caller.  Handle cancellation.
(lower_depend_clauses): New function.
(lower_omp_taskreg): Lower depend clauses.  Adjust
lower_rec_input_clauses caller.  Add clobber after the call.  Handle
cancellation.
(lower_omp_target, lower_omp_teams): New functions.
(lower_omp_1): Handle cancellation.  Handle GIMPLE_OMP_TASKGROUP,
GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GOMP_barrier, GOMP_cancel
and GOMP_cancellation_point calls.
(lower_omp): Fold stmts inside of target region.
(diagnose_sb_1, diagnose_sb_2): Handle GIMPLE_OMP_TASKGROUP,
GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
* builtin-types.def (DEF_FUNCTION_TYPE_8): Document.
(BT_FN_VOID_OMPFN_PTR_UINT,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove.
(BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT,
BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR,
BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR,
BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New.
* tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
call_may_clobber_ref_p_1): Handle BUILT_IN_GOMP_BARRIER_CANCEL,
BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_LOOP_END_CANCEL,
BUILT_IN_GOMP_SECTIONS_END_CANCEL.  Don't handle
BUILT_IN_GOMP_PARALLEL_END.
* gimple-low.c (lower_stmt): Handle GIMPLE_OMP_TASKGROUP,
GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
* gimple-pretty-print.c (dump_gimple_omp_for): Handle
GF_OMP_FOR_KIND_DISTRIBUTE.
(dump_gimple_omp_target, dump_gimple_omp_teams): New functions.
(dump_gimple_omp_block): Handle GIMPLE_OMP_TASKGROUP.
(dump_gimple_omp_return): Print lhs if it has any.
(dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Handle
gimple_omp_atomic_seq_cst_p.
(pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET
and GIMPLE_OMP_TEAMS.
* langhooks.c (lhd_omp_mappable_type): New function.
* tree-vectorizer.c (struct simd_array_to_simduid): Fix up comment.
* langhooks.h (struct lang_hooks_for_types): Add omp_mappable_type
hook.
* gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP,
GOVD_ALIGNED and GOVD_MAP_TO_ONLY.
(enum omp_region_type): Add ORT_TEAMS, ORT_TARGET_DATA and
ORT_TARGET.
(struct gimplify_omp_ctx): Add combined_loop field.
(gimplify_call_expr, gimplify_modify_expr): Don't call fold_stmt
on stmts inside of target region.
(is_gimple_stmt): Return true for OMP_DISTRIBUTE and OMP_TASKGROUP.
(omp_firstprivatize_variable): Handle GOVD_MAP, GOVD_ALIGNED,
ORT_TARGET and ORT_TARGET_DATA.
(omp_add_variable): Avoid checks on readding var for GOVD_ALIGNED.
Handle GOVD_MAP.
(omp_notice_threadprivate_variable): Complain about threadprivate
variables in target region.
(omp_notice_variable): Complain about vars with non-mappable type
in target region.  Handle ORT_TEAMS, ORT_TARGET and ORT_TARGET_DATA.
(omp_check_private): Ignore ORT_TARGET* regions.
(gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1,
gimplify_adjust_omp_clauses): Handle new OpenMP 4.0 clauses.
(find_combined_omp_for): New function.
(gimplify_omp_for): Handle gimplification of combined loops.
(gimplify_omp_workshare): Gimplify also OMP_TARGET, OMP_TARGET_DATA,
OMP_TEAMS.
(gimplify_omp_target_update): New function.
(gimplify_omp_atomic): Handle OMP_ATOMIC_SEQ_CST.
(gimplify_expr): Handle OMP_DISTRIBUTE, OMP_TARGET, OMP_TARGET_DATA,
OMP_TARGET_UPDATE, OMP_TEAMS, OMP_TASKGROUP.
(gimplify_body): If fndecl has "omp declare target" attribute, add
implicit ORT_TARGET context around it.
* tree.def (OMP_DISTRIBUTE, OMP_TEAMS, OMP_TARGET_DATA, OMP_TARGET,
OMP_TASKGROUP, OMP_TARGET_UPDATE): New tree codes.
* tree-nested.c (convert_nonlocal_reference_stmt,
convert_local_reference_stmt, convert_gimple_call): Handle
GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
* omp-builtins.def (BUILT_IN_GOMP_TASK): Use
BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR
instead of BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT.
(BUILT_IN_GOMP_TARGET, BUILT_IN_GOMP_TARGET_DATA,
BUILT_IN_GOMP_TARGET_END_DATA, BUILT_IN_GOMP_TARGET_UPDATE,
BUILT_IN_GOMP_TEAMS, BUILT_IN_BARRIER_CANCEL,
BUILT_IN_GOMP_LOOP_END_CANCEL,
BUILT_IN_GOMP_SECTIONS_END_CANCEL, BUILT_IN_OMP_GET_TEAM_NUM,
BUILT_IN_OMP_GET_NUM_TEAMS, BUILT_IN_GOMP_TASKGROUP_START,
BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_PARALLEL_LOOP_STATIC,
BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC,
BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED,
BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME, BUILT_IN_GOMP_PARALLEL,
BUILT_IN_GOMP_PARALLEL_SECTIONS, BUILT_IN_GOMP_CANCEL,
BUILT_IN_GOMP_CANCELLATION_POINT): New built-ins.
(BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
BUILT_IN_GOMP_PARALLEL_SECTIONS_START): Remove.
* tree-inline.c (remap_gimple_stmt, estimate_num_insns):
Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
* gimple.c (gimple_build_omp_taskgroup, gimple_build_omp_target,
gimple_build_omp_teams): New functions.
(walk_gimple_op): Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and
GIMPLE_OMP_TASKGROUP.  Walk optional lhs on GIMPLE_OMP_RETURN.
(walk_gimple_stmt, gimple_copy): Handle GIMPLE_OMP_TARGET,
GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
* gimple.h (enum gf_mask): GF_OMP_FOR_KIND_DISTRIBUTE,
GF_OMP_FOR_COMBINED, GF_OMP_FOR_COMBINED_INTO,
GF_OMP_TARGET_KIND_MASK, GF_OMP_TARGET_KIND_REGION,
GF_OMP_TARGET_KIND_DATA, GF_OMP_TARGET_KIND_UPDATE,
GF_OMP_ATOMIC_SEQ_CST): New.
(gimple_build_omp_taskgroup, gimple_build_omp_target,
gimple_build_omp_teams): New prototypes.
(gimple_has_substatements): Handle GIMPLE_OMP_TARGET,
GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
(gimple_omp_subcode): Use GIMPLE_OMP_TEAMS instead of
GIMPLE_OMP_SINGLE as end of range.
(gimple_omp_return_set_lhs, gimple_omp_return_lhs,
gimple_omp_return_lhs_ptr, gimple_omp_atomic_seq_cst_p,
gimple_omp_atomic_set_seq_cst, gimple_omp_for_combined_p,
gimple_omp_for_set_combined_p, gimple_omp_for_combined_into_p,
gimple_omp_for_set_combined_into_p, gimple_omp_target_clauses,
gimple_omp_target_clauses_ptr, gimple_omp_target_set_clauses,
gimple_omp_target_kind, gimple_omp_target_set_kind,
gimple_omp_target_child_fn, gimple_omp_target_child_fn_ptr,
gimple_omp_target_set_child_fn, gimple_omp_target_data_arg,
gimple_omp_target_data_arg_ptr, gimple_omp_target_set_data_arg,
gimple_omp_teams_clauses, gimple_omp_teams_clauses_ptr,
gimple_omp_teams_set_clauses): New inlines.
(CASE_GIMPLE_OMP): Add GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS
and GIMPLE_OMP_TASKGROUP.
* tree-core.h (enum omp_clause_code): Add new OpenMP 4.0 clause
codes.
(enum omp_clause_depend_kind, enum omp_clause_map_kind,
enum omp_clause_proc_bind_kind): New.
(union omp_clause_subcode): Add depend_kind, map_kind and
proc_bind_kind fields.
* tree-cfg.c (make_edges): Handle GIMPLE_OMP_TARGET,
GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
* langhooks-def.h (lhd_omp_mappable_type): New prototype.
(LANG_HOOKS_OMP_MAPPABLE_TYPE): Define.
(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
gcc/c-family/
* c-cppbuiltin.c (c_cpp_builtins): Predefine _OPENMP to
201307 instead of 201107.
* c-common.c (DEF_FUNCTION_TYPE_8): Define.
(c_common_attribute_table): Add "omp declare target" and
"omp declare simd" attributes.
(handle_omp_declare_target_attribute,
handle_omp_declare_simd_attribute): New functions.
* c-omp.c: Include c-pragma.h.
(c_finish_omp_taskgroup): New function.
(c_finish_omp_atomic): Add swapped argument, if true,
build the operation first with rhs, lhs arguments and use NOP_EXPR
build_modify_expr.
(c_finish_omp_for): Add code argument, pass it down to make_code.
(c_omp_split_clauses): New function.
(c_split_parallel_clauses): Removed.
(c_omp_declare_simd_clause_cmp, c_omp_declare_simd_clauses_to_numbers,
c_omp_declare_simd_clauses_to_decls): New functions.
* c-common.h (omp_clause_mask): New type.
(OMP_CLAUSE_MASK_1): Define.
(omp_clause_mask::omp_clause_mask, omp_clause_mask::operator &=,
omp_clause_mask::operator |=, omp_clause_mask::operator ~,
omp_clause_mask::operator |, omp_clause_mask::operator &,
omp_clause_mask::operator <<, omp_clause_mask::operator >>,
omp_clause_mask::operator ==): New methods.
(enum c_omp_clause_split): New.
(c_finish_omp_taskgroup): New prototype.
(c_finish_omp_atomic): Add swapped argument.
(c_finish_omp_for): Add code argument.
(c_omp_split_clauses): New prototype.
(c_split_parallel_clauses): Removed.
(c_omp_declare_simd_clauses_to_numbers,
c_omp_declare_simd_clauses_to_decls): New prototypes.
* c-pragma.c (omp_pragmas): Add new OpenMP 4.0 constructs.
* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_CANCEL,
PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_DECLARE_REDUCTION,
PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_END_DECLARE_TARGET, PRAGMA_OMP_SIMD,
PRAGMA_OMP_TARGET, PRAGMA_OMP_TASKGROUP and PRAGMA_OMP_TEAMS.
Remove PRAGMA_OMP_PARALLEL_FOR and PRAGMA_OMP_PARALLEL_SECTIONS.
(enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_ALIGNED,
PRAGMA_OMP_CLAUSE_DEPEND, PRAGMA_OMP_CLAUSE_DEVICE,
PRAGMA_OMP_CLAUSE_DIST_SCHEDULE, PRAGMA_OMP_CLAUSE_FOR,
PRAGMA_OMP_CLAUSE_FROM, PRAGMA_OMP_CLAUSE_INBRANCH,
PRAGMA_OMP_CLAUSE_LINEAR, PRAGMA_OMP_CLAUSE_MAP,
PRAGMA_OMP_CLAUSE_NOTINBRANCH, PRAGMA_OMP_CLAUSE_NUM_TEAMS,
PRAGMA_OMP_CLAUSE_PARALLEL, PRAGMA_OMP_CLAUSE_PROC_BIND,
PRAGMA_OMP_CLAUSE_SAFELEN, PRAGMA_OMP_CLAUSE_SECTIONS,
PRAGMA_OMP_CLAUSE_SIMDLEN, PRAGMA_OMP_CLAUSE_TASKGROUP,
PRAGMA_OMP_CLAUSE_THREAD_LIMIT, PRAGMA_OMP_CLAUSE_TO and
PRAGMA_OMP_CLAUSE_UNIFORM.
gcc/ada/
* gcc-interface/utils.c (DEF_FUNCTION_TYPE_8): Define.
gcc/fortran/
* trans-openmp.c (gfc_omp_clause_default_ctor,
gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION.
* f95-lang.c (ATTR_NULL, DEF_FUNCTION_TYPE_8): Define.
* types.def (DEF_FUNCTION_TYPE_8): Document.
(BT_FN_VOID_OMPFN_PTR_UINT,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove.
(BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT,
BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR,
BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR,
BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New.
gcc/lto/
* lto-lang.c (DEF_FUNCTION_TYPE_8): Define.
gcc/c/
* c-lang.h (current_omp_declare_target_attribute): New extern
decl.
* c-parser.c: Include c-lang.h.
(struct c_parser): Change tokens to c_token *.
Add tokens_buf field.  Change tokens_avail type to unsigned int.
(c_parser_consume_token): If parser->tokens isn't
&parser->tokens_buf[0], increment parser->tokens.
(c_parser_consume_pragma): Likewise.
(enum pragma_context): Add pragma_struct and pragma_param.
(c_parser_external_declaration): Adjust
c_parser_declaration_or_fndef caller.
(c_parser_declaration_or_fndef): Add omp_declare_simd_clauses
argument, if it is non-vNULL vector, call c_finish_omp_declare_simd.
Adjust recursive call.
(c_parser_struct_or_union_specifier): Use pragma_struct instead
of pragma_external.
(c_parser_parameter_declaration): Use pragma_param instead of
pragma_external.
(c_parser_compound_statement_nostart, c_parser_label,
c_parser_for_statement): Adjust
c_parser_declaration_or_fndef callers.
(c_parser_expr_no_commas): Add omp_atomic_lhs argument, pass
it through to c_parser_conditional_expression.
(c_parser_conditional_expression): Add omp_atomic_lhs argument,
pass it through to c_parser_binary_expression.  Adjust recursive
call.
(c_parser_binary_expression): Remove prec argument, add
omp_atomic_lhs argument instead.  Always start from PREC_NONE, if
omp_atomic_lhs is non-NULL and one of the arguments of toplevel
binop matches it, use build2 instead of parser_build_binary_op.
(c_parser_pragma): Handle PRAGMA_OMP_CANCEL,
PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_TARGET,
PRAGMA_OMP_END_DECLARE_TARGET, PRAGMA_OMP_DECLARE_REDUCTION.
Handle pragma_struct and pragma_param the same as pragma_external.
(c_parser_omp_clause_name): Parse new OpenMP 4.0 clause names.
(c_parser_omp_variable_list): Parse array sections for
OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses.
(c_parser_omp_clause_collapse): Fully fold collapse expression.
(c_parser_omp_clause_reduction): Handle user defined reductions.
(c_parser_omp_clause_branch, c_parser_omp_clause_cancelkind,
c_parser_omp_clause_num_teams, c_parser_omp_clause_thread_limit,
c_parser_omp_clause_aligned, c_parser_omp_clause_linear,
c_parser_omp_clause_safelen, c_parser_omp_clause_simdlen,
c_parser_omp_clause_depend, c_parser_omp_clause_map,
c_parser_omp_clause_device, c_parser_omp_clause_dist_schedule,
c_parser_omp_clause_proc_bind, c_parser_omp_clause_to,
c_parser_omp_clause_from, c_parser_omp_clause_uniform): New functions.
(c_parser_omp_all_clauses): Add finish_p argument.  Don't call
c_finish_omp_clauses if it is false.  Handle new OpenMP 4.0 clauses.
(c_parser_omp_atomic): Parse seq_cst clause, pass true if it is
present to c_finish_omp_atomic.  Handle OpenMP 4.0 atomic forms.
(c_parser_omp_for_loop): Add CODE argument, pass it through
to c_finish_omp_for.  Change last argument to cclauses,
and adjust uses to grab parallel clauses from the array of all
the split clauses.  Adjust c_parser_binary_expression,
c_parser_declaration_or_fndef and c_finish_omp_for callers.
(omp_split_clauses): New function.
(c_parser_omp_simd): New function.
(c_parser_omp_for): Add p_name, mask and cclauses arguments.
Allow the function to be called also when parsing combined constructs,
and call c_parser_omp_simd when parsing for simd.
(c_parser_omp_sections_scope): If section-sequence doesn't start with
#pragma omp section, require exactly one structured-block instead of
sequence of statements.
(c_parser_omp_sections): Add p_name, mask and cclauses arguments.
Allow the function to be called also when parsing combined constructs.
(c_parser_omp_parallel): Add p_name, mask and cclauses arguments.
Allow the function to be called also when parsing combined
constructs.
(c_parser_omp_taskgroup, c_parser_omp_cancel,
c_parser_omp_cancellation_point, c_parser_omp_distribute,
c_parser_omp_teams, c_parser_omp_target_data,
c_parser_omp_target_update, c_parser_omp_target,
c_parser_omp_declare_simd, c_finish_omp_declare_simd,
c_parser_omp_declare_target, c_parser_omp_end_declare_target,
c_parser_omp_declare_reduction, c_parser_omp_declare): New functions.
(c_parser_omp_construct): Add p_name and mask vars.  Handle
PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
PRAGMA_OMP_TEAMS.  Adjust c_parser_omp_for, c_parser_omp_parallel
and c_parser_omp_sections callers.
(c_parse_file): Initialize tparser.tokens and the_parser->tokens here.
(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
OMP_SINGLE_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.
(OMP_PARALLEL_CLAUSE_MASK): Likewise.  Add OMP_CLAUSE_PROC_BIND.
(OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.  Add
OMP_CLAUSE_DEPEND.
(OMP_SIMD_CLAUSE_MASK, OMP_CANCEL_CLAUSE_MASK,
OMP_CANCELLATION_POINT_CLAUSE_MASK, OMP_DISTRIBUTE_CLAUSE_MASK,
OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_DATA_CLAUSE_MASK,
OMP_TARGET_UPDATE_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK,
OMP_DECLARE_SIMD_CLAUSE_MASK): Define.
* c-typeck.c: Include tree-inline.h.
(c_finish_omp_cancel, c_finish_omp_cancellation_point,
handle_omp_array_sections_1, handle_omp_array_sections,
c_clone_omp_udr, c_find_omp_placeholder_r): New functions.
(c_finish_omp_clauses): Handle new OpenMP 4.0 clauses and
user defined reductions.
(c_tree_equal): New function.
* c-tree.h (temp_store_parm_decls, temp_pop_parm_decls,
c_finish_omp_cancel, c_finish_omp_cancellation_point, c_tree_equal,
c_omp_reduction_id, c_omp_reduction_decl, c_omp_reduction_lookup,
c_check_omp_declare_reduction_r): New prototypes.
* c-decl.c (current_omp_declare_target_attribute): New variable.
(c_decl_attributes): New function.
(start_decl, start_function): Use it instead of decl_attributes.
(temp_store_parm_decls, temp_pop_parm_decls, c_omp_reduction_id,
c_omp_reduction_decl, c_omp_reduction_lookup,
c_check_omp_declare_reduction_r): New functions.
gcc/cp/
* decl.c (duplicate_decls): Error out for redeclaration of UDRs.
(declare_simd_adjust_this): New function.
(grokfndecl): If "omp declare simd" attribute is present,
call declare_simd_adjust_this if needed and
c_omp_declare_simd_clauses_to_numbers.
* cp-array-notation.c (expand_array_notation_exprs): Handle
OMP_TASKGROUP.
* cp-gimplify.c (cp_gimplify_expr): Handle OMP_SIMD and
OMP_DISTRIBUTE.  Handle is_invisiref_parm decls in
OMP_CLAUSE_REDUCTION.
(cp_genericize_r): Handle OMP_SIMD and OMP_DISTRIBUTE like
OMP_FOR.
(cxx_omp_privatize_by_reference): Return true for
is_invisiref_parm decls.
(cxx_omp_finish_clause): Adjust cxx_omp_create_clause_info
caller.
* pt.c (apply_late_template_attributes): For "omp declare simd"
attribute call tsubst_omp_clauses,
c_omp_declare_simd_clauses_to_decls, finish_omp_clauses
and c_omp_declare_simd_clauses_to_numbers.
(instantiate_class_template_1): Call cp_check_omp_declare_reduction
for UDRs.
(tsubst_decl): Handle UDRs.
(tsubst_omp_clauses): Add declare_simd argument, if true don't
call finish_omp_clauses.  Handle new OpenMP 4.0 clauses.
Handle non-NULL OMP_CLAUSE_REDUCTION_PLACEHOLDER on
OMP_CLAUSE_REDUCTION.
(tsubst_expr): For UDRs call pushdecl and
cp_check_omp_declare_reduction.  Adjust tsubst_omp_clauses
callers.  Handle OMP_SIMD, OMP_DISTRIBUTE, OMP_TEAMS,
OMP_TARGET_DATA, OMP_TARGET_UPDATE, OMP_TARGET, OMP_TASKGROUP.
Adjust finish_omp_atomic caller.
(tsubst_omp_udr): New function.
(instantiate_decl): For UDRs at block scope, don't call
start_preparsed_function/finish_function.  Call tsubst_omp_udr.
* semantics.c (cxx_omp_create_clause_info): Add need_dtor argument,
use it instead of need_default_ctor || need_copy_ctor.
(struct cp_check_omp_declare_reduction_data): New type.
(handle_omp_array_sections_1, handle_omp_array_sections,
omp_reduction_id, omp_reduction_lookup,
cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction_r,
cp_check_omp_declare_reduction, clone_omp_udr,
find_omp_placeholder_r, finish_omp_reduction_clause): New functions.
(finish_omp_clauses): Handle new OpenMP 4.0 clauses and user defined
reductions.
(finish_omp_for): Add CODE argument, use it instead of hardcoded
OMP_FOR.  Adjust c_finish_omp_for caller.
(finish_omp_atomic): Add seq_cst argument, adjust
c_finish_omp_atomic callers, handle seq_cst and new OpenMP 4.0
atomic variants.
(finish_omp_cancel, finish_omp_cancellation_point): New functions.
* decl2.c (mark_used): Force immediate instantiation of
DECL_OMP_DECLARE_REDUCTION_P decls.
(is_late_template_attribute): Return true for "omp declare simd"
attribute.
(cp_omp_mappable_type): New function.
(cplus_decl_attributes): Add implicit "omp declare target" attribute
if requested.
* parser.c (cp_debug_parser): Print
parser->colon_doesnt_start_class_def_p.
(cp_ensure_no_omp_declare_simd, cp_finalize_omp_declare_simd): New
functions.
(enum pragma_context): Add pragma_member and pragma_objc_icode.
(cp_parser_binary_expression): Handle no_toplevel_fold_p
even for binary operations other than comparison.
(cp_parser_linkage_specification): Call
cp_ensure_no_omp_declare_simd if needed.
(cp_parser_namespace_definition): Likewise.
(cp_parser_init_declarator): Call cp_finalize_omp_declare_simd.
(cp_parser_direct_declarator): Pass declarator to
cp_parser_late_return_type_opt.
(cp_parser_late_return_type_opt): Add declarator argument,
call cp_parser_late_parsing_omp_declare_simd for declare simd.
(cp_parser_class_specifier_1): Call cp_ensure_no_omp_declare_simd.
Parse UDRs before all other methods.
(cp_parser_member_specification_opt): Use pragma_member instead of
pragma_external.
(cp_parser_member_declaration): Call cp_finalize_omp_declare_simd.
(cp_parser_function_definition_from_specifiers_and_declarator,
cp_parser_save_member_function_body): Likewise.
(cp_parser_late_parsing_for_member): Handle UDRs specially.
(cp_parser_next_token_starts_class_definition_p): Don't allow
CPP_COLON if colon_doesnt_start_class_def_p flag is true.
(cp_parser_objc_interstitial_code): Use pragma_objc_icode
instead of pragma_external.
(cp_parser_omp_clause_name): Parse new OpenMP 4.0 clause names.
(cp_parser_omp_var_list_no_open): Parse array sections for
OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses.  Add COLON argument,
if non-NULL, allow parsing to end with a colon rather than close
paren.
(cp_parser_omp_var_list): Adjust cp_parser_omp_var_list_no_open
caller.
(cp_parser_omp_clause_reduction): Handle user defined reductions.
(cp_parser_omp_clause_branch, cp_parser_omp_clause_cancelkind,
cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
cp_parser_omp_clause_aligned, cp_parser_omp_clause_linear,
cp_parser_omp_clause_safelen, cp_parser_omp_clause_simdlen,
cp_parser_omp_clause_depend, cp_parser_omp_clause_map,
cp_parser_omp_clause_device, cp_parser_omp_clause_dist_schedule,
cp_parser_omp_clause_proc_bind, cp_parser_omp_clause_to,
cp_parser_omp_clause_from, cp_parser_omp_clause_uniform): New
functions.
(cp_parser_omp_all_clauses): Add finish_p argument.  Don't call
finish_omp_clauses if it is false.  Handle new OpenMP 4.0 clauses.
(cp_parser_omp_atomic): Parse seq_cst clause, pass
true if it is present to finish_omp_atomic.  Handle new OpenMP 4.0
atomic forms.
(cp_parser_omp_for_loop): Add CODE argument, pass it through
to finish_omp_for.  Change last argument to cclauses,
and adjust uses to grab parallel clauses from the array of all
the split clauses.
(cp_omp_split_clauses): New function.
(cp_parser_omp_simd): New function.
(cp_parser_omp_for): Add p_name, mask and cclauses arguments.
Allow the function to be called also when parsing combined constructs,
and call c_parser_omp_simd when parsing for simd.
(cp_parser_omp_sections_scope): If section-sequence doesn't start with
#pragma omp section, require exactly one structured-block instead of
sequence of statements.
(cp_parser_omp_sections): Add p_name, mask and cclauses arguments.
Allow the function to be called also when parsing combined constructs.
(cp_parser_omp_parallel): Add p_name, mask and cclauses arguments.
Allow the function to be called also when parsing combined
constructs.
(cp_parser_omp_taskgroup, cp_parser_omp_cancel,
cp_parser_omp_cancellation_point, cp_parser_omp_distribute,
cp_parser_omp_teams, cp_parser_omp_target_data,
cp_parser_omp_target_update, cp_parser_omp_target,
cp_parser_omp_declare_simd, cp_parser_late_parsing_omp_declare_simd,
cp_parser_omp_declare_target, cp_parser_omp_end_declare_target,
cp_parser_omp_declare_reduction_exprs, cp_parser_omp_declare_reduction,
cp_parser_omp_declare): New functions.
(cp_parser_omp_construct): Add p_name and mask vars.  Handle
PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
PRAGMA_OMP_TEAMS.  Adjust cp_parser_omp_for, cp_parser_omp_parallel
and cp_parser_omp_sections callers.
(cp_parser_pragma): Handle PRAGMA_OMP_CANCEL,
PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_DECLARE_REDUCTION,
PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
PRAGMA_OMP_TEAMS, PRAGMA_OMP_TARGET, PRAGMA_OMP_END_DECLARE_TARGET.
Handle pragma_member and pragma_objc_icode like pragma_external.
(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
OMP_SINGLE_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.
(OMP_PARALLEL_CLAUSE_MASK): Likewise.  Add OMP_CLAUSE_PROC_BIND.
(OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.  Add
OMP_CLAUSE_DEPEND.
(OMP_SIMD_CLAUSE_MASK, OMP_CANCEL_CLAUSE_MASK,
OMP_CANCELLATION_POINT_CLAUSE_MASK, OMP_DISTRIBUTE_CLAUSE_MASK,
OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_DATA_CLAUSE_MASK,
OMP_TARGET_UPDATE_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK,
OMP_DECLARE_SIMD_CLAUSE_MASK): Define.
* parser.h (struct cp_omp_declare_simd_data): New type.
(struct cp_parser): Add colon_doesnt_start_class_def_p and
omp_declare_simd fields.
* cp-objcp-common.h (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define.
* cp-tree.h (struct lang_decl_fn): Add omp_declare_reduction_p
bit.
(DECL_OMP_DECLARE_REDUCTION_P): Define.
(OMP_FOR_GIMPLIFYING_P): Use OMP_LOOP_CHECK macro.
(struct saved_scope): Add omp_declare_target_attribute field.
(cp_omp_mappable_type, omp_reduction_id,
cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction,
finish_omp_cancel, finish_omp_cancellation_point): New prototypes.
(finish_omp_for): Add CODE argument.
(finish_omp_atomic): Add seq_cst argument.
(cxx_omp_create_clause_info): Add need_dtor argument.
gcc/testsuite/
* c-c++-common/gomp/atomic-15.c: Adjust for C diagnostics.
Remove error test that is now valid in OpenMP 4.0.
* c-c++-common/gomp/atomic-16.c: New test.
* c-c++-common/gomp/cancel-1.c: New test.
* c-c++-common/gomp/depend-1.c: New test.
* c-c++-common/gomp/depend-2.c: New test.
* c-c++-common/gomp/map-1.c: New test.
* c-c++-common/gomp/pr58472.c: New test.
* c-c++-common/gomp/sections1.c: New test.
* c-c++-common/gomp/simd1.c: New test.
* c-c++-common/gomp/simd2.c: New test.
* c-c++-common/gomp/simd3.c: New test.
* c-c++-common/gomp/simd4.c: New test.
* c-c++-common/gomp/simd5.c: New test.
* c-c++-common/gomp/single1.c: New test.
* g++.dg/gomp/block-0.C: Adjust for stricter #pragma omp sections
parser.
* g++.dg/gomp/block-3.C: Likewise.
* g++.dg/gomp/clause-3.C: Adjust error messages.
* g++.dg/gomp/declare-simd-1.C: New test.
* g++.dg/gomp/declare-simd-2.C: New test.
* g++.dg/gomp/depend-1.C: New test.
* g++.dg/gomp/depend-2.C: New test.
* g++.dg/gomp/target-1.C: New test.
* g++.dg/gomp/target-2.C: New test.
* g++.dg/gomp/taskgroup-1.C: New test.
* g++.dg/gomp/teams-1.C: New test.
* g++.dg/gomp/udr-1.C: New test.
* g++.dg/gomp/udr-2.C: New test.
* g++.dg/gomp/udr-3.C: New test.
* g++.dg/gomp/udr-4.C: New test.
* g++.dg/gomp/udr-5.C: New test.
* g++.dg/gomp/udr-6.C: New test.
* gcc.dg/autopar/outer-1.c: Expect 4 instead of 5 loopfn matches.
* gcc.dg/autopar/outer-2.c: Likewise.
* gcc.dg/autopar/outer-3.c: Likewise.
* gcc.dg/autopar/outer-4.c: Likewise.
* gcc.dg/autopar/outer-5.c: Likewise.
* gcc.dg/autopar/outer-6.c: Likewise.
* gcc.dg/autopar/parallelization-1.c: Likewise.
* gcc.dg/gomp/block-3.c: Adjust for stricter #pragma omp sections
parser.
* gcc.dg/gomp/clause-1.c: Adjust error messages.
* gcc.dg/gomp/combined-1.c: Look for GOMP_parallel_loop_runtime
instead of GOMP_parallel_loop_runtime_start.
* gcc.dg/gomp/declare-simd-1.c: New test.
* gcc.dg/gomp/declare-simd-2.c: New test.
* gcc.dg/gomp/nesting-1.c: Adjust for stricter #pragma omp sections
parser.  Add further #pragma omp sections nesting tests.
* gcc.dg/gomp/target-1.c: New test.
* gcc.dg/gomp/target-2.c: New test.
* gcc.dg/gomp/taskgroup-1.c: New test.
* gcc.dg/gomp/teams-1.c: New test.
* gcc.dg/gomp/udr-1.c: New test.
* gcc.dg/gomp/udr-2.c: New test.
* gcc.dg/gomp/udr-3.c: New test.
* gcc.dg/gomp/udr-4.c: New test.
* gfortran.dg/gomp/appendix-a/a.35.5.f90: Add dg-error.

Co-Authored-By: Richard Henderson <rth@redhat.com>
Co-Authored-By: Tobias Burnus <burnus@net-b.de>
From-SVN: r203408

10 years agocompiler: Use backend interface for function declarations.
Chris Manghane [Fri, 11 Oct 2013 03:15:33 +0000 (03:15 +0000)]
compiler: Use backend interface for function declarations.

* go-gcc.cc (Backend::error_function): New function.
(Backend::function): New function.
(Backend::make_function): New function.
(function_to_tree): New function.

From-SVN: r203403

10 years agocompiler: Avoid extra error for anonymous embedded type.
Ian Lance Taylor [Fri, 11 Oct 2013 02:50:02 +0000 (02:50 +0000)]
compiler: Avoid extra error for anonymous embedded type.

From-SVN: r203402

10 years agoruntime: Report len out of range for large len when making slice.
Ian Lance Taylor [Fri, 11 Oct 2013 00:46:57 +0000 (00:46 +0000)]
runtime: Report len out of range for large len when making slice.

From-SVN: r203401

10 years agoDaily bump.
GCC Administrator [Fri, 11 Oct 2013 00:16:37 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r203400

10 years agopredict.c (tree_estimate_probability): Add new parameter for estimate_bb_frequencies.
Teresa Johnson [Thu, 10 Oct 2013 20:30:08 +0000 (20:30 +0000)]
predict.c (tree_estimate_probability): Add new parameter for estimate_bb_frequencies.

2013-10-10  Teresa Johnson  <tejohnson@google.com>

* predict.c (tree_estimate_probability): Add new parameter
for estimate_bb_frequencies.
(estimate_bb_frequencies): Add new parameter to force estimation.
(rebuild_frequencies): When max frequency in function is small,
recompute counts from frequencies.
* predict.h (estimate_bb_frequencies): New parameter.

From-SVN: r203395

10 years agore PR fortran/58226 (negative subscript pos at fortran/options.c:1205)
Tobias Burnus [Thu, 10 Oct 2013 19:32:22 +0000 (21:32 +0200)]
re PR fortran/58226 (negative subscript pos at fortran/options.c:1205)

2013-10-09  Tobias Burnus  <burnus@net-b.de>

        PR fortran/58226
        * options.c (gfc_get_option_string): Handle zero arg case.

From-SVN: r203394

10 years agoipa-inline.c:ipa_inline: Fix leak of "order" when optimizations are disabled.
David Malcolm [Thu, 10 Oct 2013 18:11:41 +0000 (18:11 +0000)]
ipa-inline.c:ipa_inline: Fix leak of "order" when optimizations are disabled.

2013-10-10  David Malcolm  <dmalcolm@redhat.com>

* ipa-inline.c (ipa_inline): Fix leak of "order" when
optimizations are disabled.

From-SVN: r203389

10 years agoFix leak of coverage.c:da_file_name
David Malcolm [Thu, 10 Oct 2013 18:08:09 +0000 (18:08 +0000)]
Fix leak of coverage.c:da_file_name

gcc/
2013-10-10  David Malcolm  <dmalcolm@redhat.com>

* coverage.c (coverage_finish): Fix leak of da_file_name.

From-SVN: r203388

10 years agox86-tune.def: Enable X86_TUNE_SSE_TYPELESS_STORES for generic...
Jan Hubicka [Thu, 10 Oct 2013 17:52:40 +0000 (19:52 +0200)]
x86-tune.def: Enable X86_TUNE_SSE_TYPELESS_STORES for generic...

* config/i386/x86-tune.def: Enable X86_TUNE_SSE_TYPELESS_STORES
for generic, enable X86_TUNE_SSE_LOAD0_BY_PXOR for Bulldozer,
Bobcat and generic.

* gcc.target/i386/avx256-unaligned-store-3.c: Update template for
tuning change.
* gcc.target/i386/avx256-unaligned-store-1.c: Likewise.
* gcc.target/i386/pr49168-1.c: Likewise.
* gcc.target/i386/pr49002-2.c: Likewise.

From-SVN: r203387

10 years agore PR middle-end/58670 (asm goto miscompilation)
Jakub Jelinek [Thu, 10 Oct 2013 16:29:50 +0000 (18:29 +0200)]
re PR middle-end/58670 (asm goto miscompilation)

PR middle-end/58670
* stmt.c (expand_asm_operands): Add FALLTHRU_BB argument,
if any labels are in FALLTHRU_BB, use a special label emitted
immediately after the asm goto insn rather than label_rtx
of the LABEL_DECL.
(expand_asm_stmt): Adjust caller.
* cfgrtl.c (commit_one_edge_insertion): Force splitting of
edge if the last insn in predecessor is a jump with single successor,
but it isn't simplejump_p.

* gcc.dg/torture/pr58670.c: New test.

From-SVN: r203383

10 years agore PR tree-optimization/58656 (rnflow regressing after r202826)
Richard Biener [Thu, 10 Oct 2013 14:07:19 +0000 (14:07 +0000)]
re PR tree-optimization/58656 (rnflow regressing after r202826)

2013-10-10  Richard Biener  <rguenther@suse.de>

PR tree-optimization/58656
* tree-ssa-pre.c (phi_translate): Do not cache failed
translations.

From-SVN: r203377

10 years agoMinor reformatting.
Arnaud Charlet [Thu, 10 Oct 2013 13:17:33 +0000 (15:17 +0200)]
Minor reformatting.

From-SVN: r203375

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 13:17:07 +0000 (15:17 +0200)]
[multiple changes]

2013-10-10  Robert Dewar  <dewar@adacore.com>

* par-ch6.adb (Check_Junk_Semicolon_Before_Return): Remove
junk code.

2013-10-10  Javier Miranda  <miranda@adacore.com>

* sem_ch13.adb (Freeze_Entity_Checks): Avoid
loosing errors on CPP entities in -gnatc mode.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_ch5.adb (Analyze_If_Statement): Only diagnose redundant
if from source.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* restrict.adb (Check_SPARK_Restriction): Refine test (don't
automatically go to the original node).
* sem_ch11.adb (Analyze_Raise_Statement): Only raise
statements that come from source violate SPARK restrictions.
(Analyze_Raise_xxx_Error): Same fix.
* sem_ch3.adb (Analyze_Object_Declaration): Check OK SPARK
initialization on original node, not on possibly rewritten
expression.
* sem_ch4.adb (Analyze_If_Expression): Only if expressions that
come from source violate SPARK mode restrictions.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* gnat_ugn.texi: Fix confusing documentation for -gnatyM.

From-SVN: r203374

10 years agoIndex...
Andrew MacLeod [Thu, 10 Oct 2013 13:08:50 +0000 (13:08 +0000)]
Index...

Index: gimplify.c
===================================================================
*** gimplify.c (revision 203357)
--- gimplify.c (working copy)
*************** along with GCC; see the file COPYING3.
*** 46,51 ****
--- 46,53 ----
  #include "langhooks-def.h" /* FIXME: for lhd_set_decl_assembler_name */
  #include "tree-pass.h" /* FIXME: only for PROP_gimple_any */
  #include "tree-mudflap.h"
+ #include "expr.h"
+ #include "tm_p.h"

  enum gimplify_omp_var_data
  {

From-SVN: r203373

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 13:04:53 +0000 (15:04 +0200)]
[multiple changes]

2013-10-10  Yannick Moy  <moy@adacore.com>

* errout.adb (Compilation_Errors): In formal verification mode,
always return False.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Collect_Hidden_States_In_Decls): Only consider source
non-constant objects.

From-SVN: r203372

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:56:07 +0000 (14:56 +0200)]
[multiple changes]

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

* aspects.adb: Add an entry in table Canonical_Aspect for
Refined_State.
* aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument,
Aspect_Names and Aspect_Delay for Refined_State.
* einfo.adb: Add with and use clauses for Elists.
Remove Refined_State from the list of node usage.
Add Refined_State_Pragma to the list of node usage.
(Has_Null_Abstract_State): New routine.
(Refined_State): Removed.
(Refined_State_Pragma): New routine.
(Set_Refined_State): Removed.
(Set_Refined_State_Pragma): New routine.
(Write_Field8_Name): Add output for Refined_State_Pragma.
(Write_Field9_Name): Remove the output for Refined_State.
* einfo.ads: Add new synthesized attribute Has_Null_Abstract_State
along with usage in nodes.  Remove attribute Refined_State along
with usage in nodes.  Add new attribute Refined_State_Pragma along
with usage in nodes.
(Has_Null_Abstract_State): New routine.
(Refined_State): Removed.
(Refined_State_Pragma): New routine.
(Set_Refined_State): Removed.
(Set_Refined_State_Pragma): New routine.
* elists.adb (Clone): New routine.
* elists.ads (Clone): New routine.
* par-prag.adb: Add Refined_State to the pragmas that do not
require special processing by the parser.
* sem_ch3.adb: Add with and use clause for Sem_Prag.
(Analyze_Declarations): Add local variables Body_Id, Context and
Spec_Id. Add processing for delayed aspect/pragma Refined_State.
* sem_ch13.adb (Analyze_Aspect_Specifications): Update the
handling of aspect Abstract_State.  Add processing for aspect
Refined_State. Remove the bizzare insertion policy for aspect
Abstract_State.
(Check_Aspect_At_Freeze_Point): Add an entry for Refined_State.
* sem_prag.adb: Add an entry to table Sig_Flags
for pragma Refined_State.
(Add_Item): Update the
comment on usage. The inserted items need not be unique.
(Analyze_Contract_Cases_In_Decl_Part): Rename variable Restore to
Restore_Scope and update all its occurrences.
(Analyze_Pragma):
Update the handling of pragma Abstract_State. Add processing for
pragma Refined_State.
(Analyze_Pre_Post_Condition_In_Decl_Part):
Rename variable Restore to Restore_Scope and update all its
occurrences.
(Analyze_Refined_State_In_Decl_Part): New routine.
* sem_prag.ads (Analyze_Refined_State_In_Decl_Part): New routine.
* snames.ads-tmpl: Add new predefined name for Refined_State. Add
new Pragma_Id for Refined_State.

2013-10-10  Ed Schonberg  <schonberg@adacore.com>

* sem_ch10.adb (Install_Limited_Withed_Unit): handle properly the
case of a record declaration in a limited view, when the record
contains a self-referential component of an anonymous access type.

From-SVN: r203371

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:52:31 +0000 (14:52 +0200)]
[multiple changes]

2013-10-10  Thomas Quinot  <quinot@adacore.com>

* exp_ch4.adb (Process_Transient_Object): For any context other
than a simple return statement, insert the finalization action
after the context, not as an action on the context (which will
get evaluated before it).

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb (Write_Field19_Name): Correct the
string name of attribute Default_Aspect_Value.

2013-10-10  Ed Schonberg  <schonberg@adacore.com>

* sem_type.adb (Interface_Present_In_Ancestor): The progenitor
in a type declaration may be an interface subtype.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sinfo.ads (Do_Range_Check): Add special note on handling of
range checks for Succ and Pred.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* erroutc.adb (Output_Msg_Text): Remove VMS special handling.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* a-chahan.ads, a-chahan.adb (Is_Line_Terminator): New function
(Is_Mark): New function.
(Is_Other_Format): New function.
(Is_Punctuation_Connector): New function.
(Is_Space): New function.

From-SVN: r203370

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:49:30 +0000 (14:49 +0200)]
[multiple changes]

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_aggr.adb (Resolve_Array_Aggregate): Redo duplicate/missing
choice circuit. Was not quite right in some cases, which showed
up in ACATS test B43201C.
* sem_attr.adb (Address_Checks): Make sure name is set right
for some messages issued.
* mlib-prj.adb: Minor code reorganization.
* gnat_ugn.texi: Remove special VMS doc for tagging of warning msgs.
* exp_ch9.adb: Minor reformatting.

2013-10-10  Tristan Gingold  <gingold@adacore.com>

* lib-writ.adb (Write_Unit_Information): Adjust previous patch.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_ch5.adb (Analyze_If_Statement): Warn on redundant if
statement.
* sem_util.ads, sem_util.adb (Has_No_Obvious_Side_Effects): New
function.

2013-10-10  Ed Schonberg  <schonberg@adacore.com>

* exp_ch9.adb (Expand_N_Timed_Entry_Call): Simplify expansion
for the case of a dispatching trigger: there is no need to
duplicate the code or create a subprogram to encapsulate the
triggering statements. This allows exit statements in the
triggering statements, that refer to enclosing loops.

From-SVN: r203369

10 years agofreeze.adb: Minor reformatting.
Robert Dewar [Thu, 10 Oct 2013 12:46:01 +0000 (12:46 +0000)]
freeze.adb: Minor reformatting.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* freeze.adb: Minor reformatting.
* sem_ch13.adb (Freeze_Entity_Checks): New procedure
(Analyze_Freeze_Entity): Call Freeze_Entity_Checks
(Analyze_Freeze_Generic_Entity): Call Freeze_Entity_Checks.
* sinfo.ads: Add syntax for sprint for Freeze_Generic_Entity.
* sprint.ads: Add syntax for freeze generic entity node.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* einfo.adb, einfo.ads: Minor comment updates.

From-SVN: r203368

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:43:38 +0000 (14:43 +0200)]
[multiple changes]

2013-10-10  Robert Dewar  <dewar@adacore.com>

* lib-writ.adb (Write_Unit_Information): Fatal error if linker
options are detected in a predefined generic unit.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

* s-oscons-tmplt.c (CLOCK_REALTIME): Always define, possibly using
a dummy placeholder value.
(NEED_PTHREAD_CONDATTR_SETCLOCK): Remove, not needed anymore.
* thread.c: Adjust #if test accordingly.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_ch6.adb (Consequence_Error): Generate an
implicit if statement.
(Expand_Contract_Cases): Generate an implicit if statement.
(Process_Contract_Cases): Do not expand Contract_Cases when no code
is being generated.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_attr.adb (Address_Checks): New procedure.

2013-10-10  Ed Schonberg  <schonberg@adacore.com>

* sinfo.ads, sinfo.adb: New Node Freeze_Generic_Entity, to trigger
semantic actions at the proper point for entities that previously
had no explicit freeze point.
* freeze.adb (Freeze_Generic_Entities): generate new nodes to
indicate the point at which semantic checks can be performed on
entities declared in generic packages.
* sem_ch13.ads, sem_ch13.adb: New procedure
Analyze_Freeze_Generic_Entity.
* exp_util.adb (Insert_Actions): Treat new node like Freeze_Entity.
* sem.adb (Analyze): Call Analyze_Freeze_Generic_Entity.
* sprint.adb (Sprint_Node): display Analyze_Freeze_Generic_Entity.
* gcc-interface/trans.c: Ignore Analyze_Freeze_Generic_Entity.
* gcc-interface/Make-lang.in: Update dependencies.

From-SVN: r203367

10 years agosem_aggr.adb (Resolve_Array_Aggregate): Identify duplicated cases.
Robert Dewar [Thu, 10 Oct 2013 12:38:44 +0000 (12:38 +0000)]
sem_aggr.adb (Resolve_Array_Aggregate): Identify duplicated cases.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_aggr.adb (Resolve_Array_Aggregate): Identify duplicated
cases.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_ch9.adb (Analyze_Task_Body): Aspects are illegal
(Analyze_Protected_Body): Aspects are illegal.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_ch6.adb, sem_ch13.adb: Minor reformatting.
* sem_case.adb (Check_Choices): Fix bad listing of missing
values from predicated subtype case (Check_Choices): List
duplicated values.
* errout.adb (Set_Msg_Text): Process warning tags in VMS mode
* erroutc.adb (Output_Msg_Text): Handle VMS warning tags
* gnat_ugn.texi: Document /WARNINGS=TAG_WARNINGS for VMS
* ug_words: Add entries for -gnatw.d and -gnatw.D
* vms_data.ads: Add [NO]TAG_WARNINGS for -gnatw.D/-gnatw.d
* lib-writ.ads: Documentation fixes

2013-10-10  Robert Dewar  <dewar@adacore.com>

* a-wichha.adb, a-wichha.ads, a-zchhan.adb, a-zchhan.ads
(Is_Other_Format): New name for Is_Other.
(Is_Punctuation_Connector): New name for Is_Punctuation

From-SVN: r203366

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:35:07 +0000 (14:35 +0200)]
[multiple changes]

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

* aspects.adb: Add entries in table Canonical_Aspects for aspects
Refined_Depends and Refined_Global.
* aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument,
Aspect_Names, Aspect_Declay, Aspect_On_Body_Or_Stub_OK for
aspects Refined_Depends and Refined_Global.
* einfo.adb (Contract): Subprogram bodies are now valid owners
of contracts.
(Set_Contract): Subprogram bodies are now valid
owners of contracts.
(Write_Field24_Name): Output the contract
attribute for subprogram bodies.
* exp_ch6.adb (Expand_Subprogram_Contract): New routine.
* exp_ch6.ads (Expand_Subprogram_Contract): New routine.
* par-prag.adb: Pragmas Refined_Depends and Refined_Global do
not require any special processing by the parser.
* sem_ch3.adb (Adjust_D): Renamed to Adjust_Decl.
(Analyze_Declarations): Code reformatting. Analyze the contract
of a subprogram body at the end of the declarative region.
* sem_ch6.adb (Analyze_Generic_Subprogram_Body):
Subprogram bodies can now have contracts.  Use
Expand_Subprogram_Contract to handle the various contract
assertions.
(Analyze_Subprogram_Body_Contract): New null routine.
(Analyze_Subprogram_Body_Helper): Subprogram bodies can now have
contracts.  Use Expand_Subprogram_Contract to handle the various
contract assertions.
(Analyze_Subprogram_Contract): Add local
variable Nam. Update the call to Analyze_PPC_In_Decl_Part. Capture
the pragma name in Nam.
(Process_PPCs): Removed.
* sem_ch6.ads (Analyze_Subprogram_Body_Contract): New routine.
(Analyze_Subprogram_Contract): Update the comment on usage.
* sem_ch13.adb (Analyze_Aspect_Specifications): Add null
implementations for aspects Refined_Depends and Refined_Global.
(Check_Aspect_At_Freeze_Point): Aspects Refined_Depends and
Refined_Global do not need to be checked at the freeze point.
* sem_prag.adb: Add entries in table Sig_Flags
for pragmas Refined_Depends and Refined_Global.
(Analyze_Contract_Cases_In_Decl_Part): Add local
variable Restore. Use Restore to pop the scope.
(Analyze_Depends_In_Decl_Part): Add local variable Restore. Use
Restore to pop the scope.
(Analyze_Global_In_Decl_List): Add local variable Restore. Use Restore
to pop the scope.
(Analyze_PPC_In_Decl_Part): Renamed to
Analyze_Pre_Post_Condition_In_Decl_Part.
(Analyze_Pragma):
Add null implementations for pragmas Refined_Depends and
Refined_Global. Refined_Pre and Refined_Post are now
handled by routine Analyze_Refined_Pre_Post_Condition
exclusively.
(Analyze_Refined_Depends_In_Decl_Part): New
null routine.
(Analyze_Refined_Global_In_Decl_Part):
New null routine.
(Analyze_Refined_Pre_Post):
Renamed to Analyze_Refined_Pre_Post_Condition.
(Analyze_Refined_Pre_Post_Condition): Analyze the boolean
expression.
(Check_Precondition_Postcondition): Update the call
to Analyze_PPC_In_Decl_Part.
* sem_prag.ads: Add entries in table
Pragma_On_Body_Or_Stub_OK for pragmas Refined_Depends
and Refined_Global.
(Analyze_PPC_In_Decl_Part): Renamed
to Analyze_Pre_Post_Condition_In_Decl_Part.  Update the
comment on usage.
(Analyze_Refined_Depends_In_Decl_Part): New routine.
(Analyze_Refined_Global_In_Decl_Part): New routine.
(Analyze_Test_Case_In_Decl_Part): Update the comment on usage.
* sem_util.adb (Add_Contract_Item): Rename formal Item to Prag
and update all occurrences.  Subprogram body contracts can now
contain pragmas Refined_Depends and Refined_Global.
* sem_util.ads (Add_Contract_Item): Rename formal Item to
Prag. Update the comment on usage.
* sinfo.ads: Update the comment on structure and usage of
N_Contract.
* snames.ads-tmpl: Add new predefined names for Refined_Depends
and Refined_Global. Add entries in table Pragma_Id for
Refined_Depends and Refined_Global.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* types.ads: Minor reformatting.

From-SVN: r203365

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:32:03 +0000 (14:32 +0200)]
[multiple changes]

2013-10-10  Thomas Quinot  <quinot@adacore.com>

* s-taprop-posix.adb: Add missing comment.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* freeze.adb (Freeze_Record_Type): Move choice checking to
Analyze_Freeze_Entity (Freeze_Record_Type): Make sure all choices
are properly frozen
* sem_case.adb (Check_Choices): Remove misguided attempt to
freeze choices (this is now done in Freeze_Record_Type where
it belongs).
(Check_Choices): Remove some analyze/resolve calls
that are redundant since they are done in Analyze_Choices.
* sem_ch13.adb (Analyze_Freeze_Entity): Do the error
checking for choices in variant records here (moved here from
Freeze.Freeze_Record_Type)

From-SVN: r203364

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:30:10 +0000 (14:30 +0200)]
[multiple changes]

2013-10-10  Thomas Quinot  <quinot@adacore.com>

* s-oscons-tmplt.c, s-taprop-posix.adb (CLOCK_REALTIME): Always define,
possibly using a dummy placeholder value.
(Compute_Deadline): For the case of an
Absolute_Calendar deadline, if the target uses another clock
than CLOCK_REALTIME as CLOCK_RT_Ada, compensate for possible
different epoch.

2013-10-10  Ed Schonberg  <schonberg@adacore.com>

* sem_ch8.adb (Find_Expanded_Name): Handle properly a fully
qualified reference to a generic child unit within itself,
in an instantiation.

From-SVN: r203363

10 years ago[multiple changes]
Arnaud Charlet [Thu, 10 Oct 2013 12:27:37 +0000 (14:27 +0200)]
[multiple changes]

2013-10-10  Pascal Obry  <obry@adacore.com>

* prj-conf.adb: Minor typo fixes in comment.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

* s-taprop-posix.adb (Compute_Deadline): New local subprogram,
factors common code between Timed_Sleep and Timed_Delay.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* freeze.adb (Freeze_Record_Type): Don't replace others if
expander inactive. This avoids clobbering the ASIS tree in
-gnatct mode.

2013-10-10  Robert Dewar  <dewar@adacore.com>

* sem_res.adb (Resolve_Op_Expon): Avoid crash testing for
fixed-point case in preanalysis mode (error will be caught during
full analysis).

From-SVN: r203362