Commit Graph

142907 Commits

Author SHA1 Message Date
Tom de Vries
86938de6f6 Mark pointers to allocated target vars as restricted, if possible
2015-12-02  Tom de Vries  <tom@codesourcery.com>

	* omp-low.c (install_var_field, scan_sharing_clauses): Add and handle
	parameter base_pointers_restrict.
	(omp_target_base_pointers_restrict_p): New function.
	(scan_omp_target): Call scan_sharing_clauses with base_pointers_restrict
	arg.

	* c-c++-common/goacc/kernels-alias-2.c: New test.
	* c-c++-common/goacc/kernels-alias-3.c: New test.
	* c-c++-common/goacc/kernels-alias-4.c: New test.
	* c-c++-common/goacc/kernels-alias-5.c: New test.
	* c-c++-common/goacc/kernels-alias-6.c: New test.
	* c-c++-common/goacc/kernels-alias-7.c: New test.
	* c-c++-common/goacc/kernels-alias-8.c: New test.
	* c-c++-common/goacc/kernels-alias.c: New test.

From-SVN: r231182
2015-12-02 15:48:35 +00:00
Jonathan Wakely
28eca950b7 Fix ambiguity with multiple enable_shared_from_this bases
PR libstdc++/56383
	* testsuite/20_util/enable_shared_from_this/56383.cc: New.
	* include/bits/shared_ptr_base.h (__enable_shared_from_this): Make
	friend declaration match previous declaration of
	__enable_shared_from_this_helper.
	* include/bits/shared_ptr.h (enable_shared_from_this): Likewise.

From-SVN: r231181
2015-12-02 15:08:18 +00:00
Nathan Sidwell
f313d112b0 nvptx-protos.h (nvptx_output_mov_insn): Declare.
* config/nvptx/nvptx-protos.h (nvptx_output_mov_insn): Declare.
	(nvptx_underlying_object_mode): Delete.
	* config/nvptx/nvptx.c (nvptx_underlying_object_mode): Delete.
	(output_reg): New.
	(nvptx_declare_function_name): Use output_reg.  Remove punning
	buffer.
	(nvptx_output_mov_insn): New.
	(nvptx_print_operand): Separate SUBREG handling, remove 'f' case,
	Use output_reg. Merge 't' and 'u' handling.
	* config/nvptx/nvptx.h (NVPTX_PUNNING_BUFFER_REGNUM): Delete.
	(struct machine_function): Remvoe punning_buffer_size.
	(REGISTER_NAMES): Remove %punbuffer.
	* config/nvptx/nvptx.md (UNSPEC_CPLX_LOWPART,
	UNSPEC_CPLX_HIGHPART): Delete.
	(*mov<mode>_insn [QHSDIM): Remove unnecessary constraints, use
	nvptx_output_mov_insn.
	(*mov<mode>_insn [SDFM): Reorder constraints to match integer
	moc.  Use nvptx_output_mov_insn.
	(highpartscsf2,  set_highpartscsf2, lowpartscsf2,
	set_lowpartscsf2): Delete.
	(mov<mode> [SDCM]): Delete.

From-SVN: r231180
2015-12-02 14:57:54 +00:00
Richard Biener
7b2eca0029 tree.h (tree_invariant_p): Declare.
2015-12-02  Richard Biener  <rguenther@suse.de>

	* tree.h (tree_invariant_p): Declare.
	* tree.c (tree_invariant_p): Export.
	* genmatch.c (dt_simplify::gen_1): For GENERIC code-gen never
	create SAVE_EXPRs but reject patterns if we would need to.

From-SVN: r231178
2015-12-02 14:50:32 +00:00
Tom de Vries
694e5e4bae Handle BUILT_IN_GOACC_PARALLEL in ipa-pta
2015-12-02  Tom de Vries  <tom@codesourcery.com>

	* tree-ssa-structalias.c (find_func_aliases_for_builtin_call)
	(find_func_clobbers, ipa_pta_execute): Handle BUILT_IN_GOACC_PARALLEL.

	* c-c++-common/goacc/kernels-alias-ipa-pta-2.c: New test.
	* c-c++-common/goacc/kernels-alias-ipa-pta-3.c: New test.
	* c-c++-common/goacc/kernels-alias-ipa-pta.c: New test.

From-SVN: r231169
2015-12-02 13:32:51 +00:00
Richard Biener
7dbf36f7cb vect-strided-a-u8-i8-gap7-big-array.c: Fix uninitialized y guarding a call to abort ().
2015-12-02  Richard Biener  <rguenther@suse.de>

	* gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c: Fix uninitialized
	y guarding a call to abort ().
	* gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise.
	* gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c: Likewise.

From-SVN: r231168
2015-12-02 11:49:48 +00:00
Kirill Yukhin
01e3391a90 AVX-512. Split out mask version for vec_extract_hi_<mode>.
gcc/
	* config/i386/sse.md (define_insn "vec_extract_hi_<mode>_maskm"):
	Remove "prefix_extra".
	(define_insn "vec_extract_hi_<mode>_mask"): New.
	(define_insn "vec_extract_hi_<mode>"): Remove masking.
gcc/testsuite/
	* gcc.target/i386/avx512vl-vextractf32x4-1.c: Fix scan pattern.

From-SVN: r231167
2015-12-02 11:07:42 +00:00
Segher Boessenkool
cbd3a543f6 rs6000: Optimise SImode cstore on 64-bit
On 64-bit we can do comparisons of 32-bit values by extending those
values to 64-bit, subtracting them, and then getting the high bit of
the result.  For registers this is always cheaper than using the carry
bit sequence; and if the comparison involves a constant, this is cheaper
than the sequence we previously generated in half of the cases (and the
same cost in the other cases).

After this, the only sequence left that is using the mfcr insn is the
one doing signed comparison of Pmode registers.

From-SVN: r231165
2015-12-02 11:56:15 +01:00
Marek Polacek
1a99e748a3 re PR middle-end/68570 (ICE on valid code at -O1, -O2 and -O3 on x86_64-linux-gnu)
PR middle-end/68570
	* gcc.dg/torture/pr68570.c: New test.

From-SVN: r231163
2015-12-02 10:22:23 +00:00
Richard Biener
3810ff24db re PR tree-optimization/68625 (Segmentation fault in useless_type_conversion_p)
2015-12-02  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/68625
	* tree-cfgcleanup.c (cleanup_tree_cfg_bb): Do not call
	cleanup_control_flow_bb.
	(cleanup_tree_cfg_1): First perform cleanup_control_flow_bb
	on all BBs, then cleanup_tree_cfg_bb and finally iterate
	over the worklist doing both.

	* gcc.dg/torture/pr68625.c: New testcase.

From-SVN: r231162
2015-12-02 09:47:43 +00:00
Richard Sandiford
d95ab70a3c PR 68432: Add a target hook to control size/speed optab choices
The problem in the PR is that some i386 optabs FAIL when
optimising for size rather than speed.  The gimple level generally
needs access to this information before calling the generator,
so this patch adds a new hook to say whether an optab should
be used when optimising for size or speed.  It also has a "both"
option for cases where we want code that is optimised for both
size and speed.

I've passed the optab to the target hook because I think in most
cases that's more useful than the instruction code.  We could pass
both if there's a use for it though.

At the moment the match-and-simplify code doesn't have direct access
to the target block, so for now I've used "both" there.

Tested on x86_64-linux-gnu and powerpc64-linux-gnu.

gcc/
	PR tree-optimization/68432
	* coretypes.h (optimization_type): New enum.
	* doc/tm.texi.in (TARGET_OPTAB_SUPPORTED_P): New hook.
	* doc/tm.texi: Regenerate.
	* target.def (optab_supported_p): New hook.
	* targhooks.h (default_optab_supported_p): Declare.
	* targhooks.c (default_optab_supported_p): New function.
	* predict.h (function_optimization_type): Declare.
	(bb_optimization_type): Likewise.
	* predict.c (function_optimization_type): New function.
	(bb_optimization_type): Likewise.
	* optabs-query.h (convert_optab_handler): Define an overload
	that takes an optimization type.
	(direct_optab_handler): Likewise.
	* optabs-query.c (convert_optab_handler): Likewise.
	(direct_optab_handler): Likewise.
	* internal-fn.h (direct_internal_fn_supported_p): Take an
	optimization_type argument.
	* internal-fn.c (direct_optab_supported_p): Likewise.
	(multi_vector_optab_supported_p): Likewise.
	(direct_internal_fn_supported_p): Likewise.
	* builtins.c (replacement_internal_fn): Update call to
	direct_internal_fn_supported_p.
	* gimple-match-head.c (build_call_internal): Likewise.
	* tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
	* tree-vect-stmts.c (vectorizable_internal_function): Likewise.
	* tree.c (maybe_build_call_expr_loc): Likewise.
	* config/i386/i386.c (ix86_optab_supported_p): New function.
	(TARGET_OPTAB_SUPPORTED_P): Define.
	* config/i386/i386.md (asinxf2): Remove optimize_insn_for_size_p check.
	(asin<mode>2, acosxf2, acos<mode>2, log1pxf2, log1p<mode>2)
	(expNcorexf3, expxf2, exp<mode>2, exp10xf2, exp10<mode>2, exp2xf2)
	(exp2<mode>2, expm1xf2, expm1<mode>2, ldexpxf3, ldexp<mode>3)
	(scalbxf3, scalb<mode>3, rint<mode>2, round<mode>2)
	(<rounding_insn>xf2, <rounding_insn><mode>2): Likewise.

gcc/testsuite/
	* gcc.target/i386/pr68432-1.c: New test.
	* gcc.target/i386/pr68432-2.c: Likewise.
	* gcc.target/i386/pr68432-3.c: Likewise.

From-SVN: r231161
2015-12-02 09:08:49 +00:00
Richard Sandiford
886456e210 Check for invalid FAILs
This patch makes it a compile-time error for an internal-fn optab
to FAIL.  There are certainly other optabs and patterns besides these
that aren't allowed to fail, but this at least deals with the immediate
point of controversy.

Tested normally on x86_64-linux-gnu.  Also tested by building one
configuration per cpu directory.  arc-elf and pdp11 didn't build
for unrelated reasons, but I checked that insn-emit.o built for
both without error.

gcc/
	* Makefile.in (GENSUPPORT_H): New macro.
	(build/gensupport.o, build/read-rtl.o, build/genattr.o)
	(build/genattr-common.o, build/genattrtab.o, build/genautomata.o)
	(build/gencodes.o, build/genconditions.o, build/genconfig.o)
	(build/genconstants.o, build/genextract.o, build/genflags.o)
	(build/gentarget-def.o): Use it.
	(build/genemit.o): Likewise.  Depend on internal-fn.def.
	* genopinit.c: Move block comment to optabs.def.
	(optab_tag, optab_def): Move to gensupport.h
	(pattern): Likewise, renaming to optab_pattern.
	(match_pattern): Move to gensupport.c
	(gen_insn): Use find_optab.
	(patterns, pattern_cmp): Replace pattern with optab_pattern.
	(main): Likewise.  Use num_optabs.
	* optabs.def: Add comment that was previously in genopinit.c.
	* gensupport.h (optab_tag): Moved from genopinit.c
	(optab_def): Likewise, expanding commentary.
	(optab_pattern): Likewise, after renaming from pattern.
	(optabs, num_optabs, find_optab): Declare.
	* gensupport.c (optabs): Moved from genopinit.c.
	(num_optabs): New variable.
	(match_pattern): Moved from genopinit.c.
	(find_optab): New function, extracted from genopinit.c:gen_insn.
	* genemit.c (nofail_optabs): New variable.
	(emit_c_code): New function.
	(gen_expand): Check whether the instruction is an optab that isn't
	allowed to fail.  Call emit_c_code.
	(gen_split): Call emit_c_code here too.
	(main): Initialize nofail_optabs.  Don't emit FAIL and DONE here.

From-SVN: r231160
2015-12-02 09:06:28 +00:00
Andreas Krebbel
e970b4b000 S/390: Make constant checking more strict
gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/predicates.md (const_mask_operand): New predicate.
	* config/s390/s390-builtins.def: Set a smaller bitmask for a few builtins.
	* config/s390/vector.md: Change predicate from immediate_operand
	to either const_int_operand or const_mask_operand.  Add special
	insn conditions on patterns which have to exclude certain values.
	* config/s390/vx-builtins.md: Likewise.

From-SVN: r231159
2015-12-02 08:05:04 +00:00
Andreas Krebbel
8eb1b59beb S/390: vec_set mode DI->SI for shift_count
gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/vector.md ("*vec_set<mode>"): Change shift count
	mode from DI to SI.

From-SVN: r231158
2015-12-02 08:03:35 +00:00
Andreas Krebbel
dfbe4dfd9d S/390: Fix vec_splat_* builtins.
gcc/testsuite/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/zvector/vec-splat-2.c: New test.

gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390-builtin-types.def: New builtin types added.
	* config/s390/s390-builtins.def: Add s390_vec_splat_* definitions.
	* config/s390/s390.c (s390_expand_builtin): Always truncate
	constants to the mode in the pattern.
	* config/s390/vecintrin.h: Let the vec_splat_* macros point to the
	respective builtin __builtin_s390_vec_splat_*.

From-SVN: r231157
2015-12-02 08:02:05 +00:00
Andreas Krebbel
4f3ccd0859 S/390: Sort builtin types - cleanup only.
gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390-builtin-types.def: Sort builtin types.

From-SVN: r231156
2015-12-02 07:59:52 +00:00
Andreas Krebbel
e1fae80e04 S/390: Fix RT flag in vstrc instruction.
gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390-c.c (s390_get_vstring_flags): Invert the
	condition for the RT flag.

From-SVN: r231155
2015-12-02 07:57:24 +00:00
Andreas Krebbel
b0057efd30 S/390: Enable vrepi constants.
gcc/testsuite/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/vector/vec-vrepi-1.c: New test.

gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/constraints.md ("jKK"): New constraint.
	* config/s390/s390.c (tm-constrs.h): Include for
	satisfies_constraint_*.
	(s390_legitimate_constant_p): Allow jKK constants.  Use
	satisfies_constraint_* also for the others.
	(legitimate_reload_vector_constant_p): Likewise.
	(print_operand): Allow h output modifier on vectors.
	* config/s390/vector.md ("mov<mode>"): Add vrepi.

From-SVN: r231154
2015-12-02 07:55:40 +00:00
Andreas Krebbel
a4a443cee2 S/390: Fix vrepi constraint letter.
gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/vector.md ("*vec_splats<mode>"): Fix constraint
	latter I->K.

gcc/testsuite/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/zvector/vec-splat-1.c: New test.

From-SVN: r231153
2015-12-02 07:53:03 +00:00
Andreas Krebbel
6f5a59d1d1 S/390: Further bswap enhancements.
gcc/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390.md ("bswap<mode>2"): Add support for strv and
	strvg.
	("bswaphi2"): New pattern.
	New splitter for HI reg-reg bswap.

gcc/testsuite/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/bswap-1.c (foo64c, foo32a, foo32c): New functions.
	* gcc.target/s390/bswaphi-1.c: New test.

From-SVN: r231152
2015-12-02 07:49:47 +00:00
Andreas Krebbel
a233c89144 S/390: Enable 64 bit atomic tests with -m31 -mzarch.
gcc/testsuite/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* lib/target-supports.exp: Add s390 and s390x to the list of long
	long atomic targets.

From-SVN: r231151
2015-12-02 07:45:50 +00:00
Jiri Engelthaler
6525fb87c9 [PATCH] Fix PR68029
PR driver/68029
	* opts-common.c (prune_options): Don't ignore -fdiagnostics-color
	if it is the first parameter.

From-SVN: r231150
2015-12-02 00:42:58 -07:00
Andreas Krebbel
16381201d1 S/390: bswap64 testcases require -mzarch.
gcc/testsuite/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.dg/optimize-bswapdi-1.c: Force using -mzarch on s390 and
	s390x to enable 64 bit bswap patterns.
	* gcc.dg/optimize-bswapdi-2.c: Likewise.
	* gcc.dg/optimize-bswapdi-3.c: Likewise.
	* lib/target-supports.exp: Add a comment for s390.

From-SVN: r231149
2015-12-02 07:41:53 +00:00
Andreas Krebbel
71e513525f S/390: bswap testcases require -march=z900 to work with -m31.
gcc/testsuite/ChangeLog:

2015-12-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.dg/builtin-bswap-6a.c: Add -march=z900 for s390 and s390x in
	order to make -m31 work.
	* gcc.dg/optimize-bswapsi-1.c: Likewise.
	* gcc.dg/optimize-bswapsi-2.c: Likewise.

From-SVN: r231148
2015-12-02 07:37:23 +00:00
Jakub Jelinek
657e4e4734 re PR c/68533 (bogus location for "warning: ‘struct s3’ declared inside parameter list will not be visible outside of this definition or declaration")
PR c/68533
	* c-decl.c (get_parm_info): Use b->locus instead of input_location
	for diagnostics.

	* gcc.dg/pr68533.c: New test.

From-SVN: r231147
2015-12-02 08:33:06 +01:00
Andreas Arnez
fe78aa0474 [PR68603] Associate conditional C++ loop's back-jump with start, not body
SVN commit r230979 always associates a loop's back-jump with the start
of the loop body.  This caused a regression for gcov with conditional
loops, because then the loop body appears to be covered twice per
iteration.

2015-12-02  Andreas Arnez  <arnez@linux.vnet.ibm.com>

	PR gcov-profile/68603
	* cp-gimplify.c (genericize_cp_loop): For the back-jump's location
	use the start of the loop body only if the loop is unconditional.

From-SVN: r231146
2015-12-02 07:26:30 +00:00
Jan Sommer
df096e508e [PATCH] Fix declaration of pthread-structs in s-osinte-rtems.ads (ada/68169)
PR ada/68169
	* s-oscons-tmplt.c: Generate pthread constants for RTEMS
	* s-osinte-rtems.ads: Declare pthread structs as opaque types in Ada

From-SVN: r231145
2015-12-02 00:09:41 -07:00
Ian Lance Taylor
1ac22e762e re PR go/65717 (64-bit runtime FAILs with 32-bit compiler)
PR go/65717
    compiler: Fix array reflection when len doesn't fit in unsigned long.
    
    This comes up when using a 32-bit host and a 64-bit target.
    
    Fixes https://gcc.gnu.org/PR65717.
    
    Reviewed-on: https://go-review.googlesource.com/17330

From-SVN: r231142
2015-12-02 01:28:26 +00:00
GCC Administrator
867038d7d3 Daily bump.
From-SVN: r231140
2015-12-02 00:16:12 +00:00
John David Anglin
9a32d4374e fptr.c (__canonicalize_funcptr_for_compare): Initialize fixup values if saved GOT address doesn't match runtime address.
* config/pa/fptr.c (__canonicalize_funcptr_for_compare): Initialize
	fixup values if saved GOT address doesn't match runtime address.
	(fixup_branch_offset): Reorder list.

From-SVN: r231135
2015-12-01 23:59:20 +00:00
Richard Sandiford
b1b6836e90 PR68577: Handle narrowing for vector popcount, etc.
This patch adds support for simple cases where a vector
internal function returns wider results than the scalar
equivalent.  It punts on other cases.

Tested on powerpc64-linux-gnu and x86_64-linux-gnu.

gcc/
	PR tree-optimization/68577
	* tree-vect-stmts.c (simple_integer_narrowing): New function.
	(vectorizable_call): Restrict internal function handling
	to NONE and NARROW cases, using simple_integer_narrowing
	to test for the latter.  Add cost of narrowing operation
	and insert it where necessary.

gcc/testsuite/
	PR tree-optimization/68577
	* gcc.dg/vect/pr68577.c: New test.

From-SVN: r231131
2015-12-01 21:01:35 +00:00
Andreas Tobler
e5f3103135 freebsd64.h (ELFv2_ABI_CHECK): Add new macro.
2015-12-01  Andreas Tobler  <andreast@gcc.gnu.org>

    * config/rs6000/freebsd64.h (ELFv2_ABI_CHECK): Add new macro.
    (SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set
    rs6000_current_abi to ABI_AIX or ABI_ELFv2.

From-SVN: r231129
2015-12-01 21:17:37 +01:00
Andreas Tobler
7eb46becb3 re PR libffi/65726 (libffi fails to build when not bootstrapping: configure: error: C++ preprocessor "/lib/cpp" fails sanity check)
2015-12-01  Andreas Tobler  <andreast@gcc.gnu.org>

    PR libffi/65726
    * Makefile.def (lang_env_dependencies): Make libffi depend
    on cxx.
    * Makefile.in: Regenerate.

From-SVN: r231128
2015-12-01 21:15:35 +01:00
Nathan Sidwell
69823d7678 nvptx-protos.h (nvptx_output_aligned_decl): Declare.
gcc/
	* config/nvptx/nvptx-protos.h (nvptx_output_aligned_decl): Declare.
	* config/nvptx/nvptx.h (ASM_OUTPUT_ALIGNED_DECL_COMMON,
	ASM_OUTPUT_ALIGNED_DECL_LOCAL): Forward to nvptx_output_aligned_decl.
	* config/nvptx/nvptx.c (write_fn_marker, write_var_marker): New.
	(write_fn_proto, write_fn_proto_from_insn): Call write_fn_marker.
	(init_output_initializer): Call write_var_marker.
	(nvptx_output_aligned_decl): New.
	(nvptx_assemble_undefined_decl, nvptx_file_end): Call write_var_marker.

	gcc/testsuite/
	* gcc.target/nvptx/uninit-decl.c: New.

From-SVN: r231127
2015-12-01 20:13:02 +00:00
Jan Hubicka
9dc39706b4 alias-1.c: New testcase.
* gcc.c-torture/execute/alias-1.c: New testcase.
	* c-common.c: Do not silently ignore -fstrict-aliasing changes.

From-SVN: r231125
2015-12-01 19:14:44 +00:00
Jan Hubicka
8c86248e58 lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.
* lto-streamer-out.c (hash_tree): Do not stream TYPE_ALIAS_SET.
	* tree-streamer-out.c (pack_ts_type_common_value_fields): Do not
	stream TYPE_ALIAS_SET.
	* tree-streamer-in.c (unpack_ts_type_common_value_fields): Do not
	stream TYPE_ALIAS_SET.

	* lto.c (compare_tree_sccs_1): Do not compare TYPE_ALIAS_SET.

From-SVN: r231124
2015-12-01 19:13:12 +00:00
Nathan Sidwell
ac8560785f nvptx.c (nvptx_function_arg_advance): Don't consider mode.
* config/nvptx/nvptx.c (nvptx_function_arg_advance): Don't
	consider mode.

From-SVN: r231121
2015-12-01 16:58:08 +00:00
Marek Polacek
0b2a137802 re PR tree-optimization/64769 (ICE: tree check: expected integer_cst, have parm_decl in simd_clone_clauses_extract, at omp-low.c:12503 with -fopenmp-simd)
PR tree-optimization/64769
	* c-c++-common/gomp/pr64769.c: New test.

From-SVN: r231120
2015-12-01 16:22:28 +00:00
Bill Schmidt
3b47f4cc10 rs6000.c (const_load_sequence_p): Handle extra indirection for large and small code models.
[gcc]

2015-12-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (const_load_sequence_p): Handle extra
	indirection for large and small code models.
	(adjust_vperm): Likewise.

[gcc/testsuite]

2015-12-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/swaps-p8-22.c: New.

From-SVN: r231119
2015-12-01 16:10:45 +00:00
Julian Brown
37d5ad46dd OpenACC host_data support.
gcc/
	* gimple-pretty-print.c (dump_gimple_omp_target): Add host_data
	support.
	* gimple.h (gf_mask): Add GF_OMP_TARGET_KIND_OACC_HOST_DATA.
	(is_gimple_omp_oacc): Add support for above.
	* gimplify.c (omp_region_type): Add ORT_ACC_HOST_DATA.
	(omp_notice_variable): Diagnose undefined implicit uses of
	use_device variables in offloaded regions.
	(gimplify_scan_omp_clauses): Add host_data, use_device
	support. Diagnose undefined mapping of use_device variables in
	OpenACC clauses.
	(gimplify_omp_workshare): Add host_data support.
	(gimplify_expr): Likewise.
	* omp-builtins.def (BUILT_IN_GOACC_HOST_DATA): New.
	* omp-low.c (lookup_decl_in_outer_ctx)
	(maybe_lookup_decl_in_outer_ctx): Add optional argument to skip
	host_data regions.
	(scan_sharing_clauses): Support use_device.
	(check_omp_nesting_restrictions): Support host_data.
	(expand_omp_target): Support host_data.
	(lower_omp_target): Skip over outer host_data regions when looking
	up decls. Support use_device.
	(make_gimple_omp_edges): Support host_data.
	* tree-nested.c (convert_nonlocal_omp_clauses): Add use_device
	clause.

	gcc/c/
	* c-parser.c (c_parser_omp_clause_name): Add use_device support.
	(c_parser_oacc_clause_use_device): New function.
	(c_parser_oacc_all_clauses): Add use_device support.
	(OACC_HOST_DATA_CLAUSE_MASK): New macro.
	(c_parser_oacc_host_data): New function.
	(c_parser_omp_construct): Add host_data support.
	* c-tree.h (c_finish_oacc_host_data): Add prototype.
	* c-typeck.c (c_finish_oacc_host_data): New function.
	(c_finish_omp_clauses): Add use_device support.

	gcc/cp/
	* cp-tree.h (finish_oacc_host_data): Add prototype.
	* parser.c (cp_parser_omp_clause_name): Add use_device support.
	(cp_parser_oacc_all_clauses): Add use_device support.
	(OACC_HOST_DATA_CLAUSE_MASK): New macro.
	(cp_parser_oacc_host_data): New function.
	(cp_parser_omp_construct): Add host_data support.
	(cp_parser_pragma): Add host_data support.
	* semantics.c (finish_omp_clauses): Add use_device support.
	(finish_oacc_host_data): New function.

	gcc/c-family/
	* c-pragma.c (oacc_pragmas): Add PRAGMA_OACC_HOST_DATA.
	* c-pragma.h (pragma_kind): Add PRAGMA_OACC_HOST_DATA.
	(pragma_omp_clause): Add PRAGMA_OACC_CLAUSE_USE_DEVICE.

	libgomp/
	* oacc-parallel.c (GOACC_host_data): New function.
	* libgomp.map (GOACC_host_data): Add to GOACC_2.0.1.
	* testsuite/libgomp.oacc-c-c++-common/host_data-1.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/host_data-2.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/host_data-3.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/host_data-4.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/host_data-5.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/host_data-6.c: New test.


Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
Co-Authored-By: James Norris <James_Norris@mentor.com>

From-SVN: r231118
2015-12-01 15:52:23 +00:00
Marek Polacek
4bc84763c0 re PR tree-optimization/67916 (wrong code at -O3 on x86_64-linux-gnu)
PR tree-optimization/67916
	* gcc.dg/torture/pr67916.c: New test.

From-SVN: r231117
2015-12-01 15:47:34 +00:00
Marek Polacek
8b6ab677a2 re PR middle-end/68582 (-Wunused-function doesn't warn about unused static __attribute__((noreturn)) functions)
PR middle-end/68582
	* cgraphunit.c (check_global_declaration): Only depend on TREE_THIS_VOLATILE
	for VAR_DECLs.

	* c-c++-common/pr68582.c: New test.

From-SVN: r231116
2015-12-01 15:44:08 +00:00
Richard Sandiford
6c59645f5d PR68474: Fix tree-call-cdce.c:use_internal_fn
We'd call gen_shrink_wrap_conditions for functions that it can't handle
but edom_only_function can.

Tested on x86_64-linux-gnu.

gcc/
	PR tree-optimization/68474
	* tree-call-cdce.c (use_internal_fn): Protect call to
	gen_shrink_wrap_conditions.

gcc/testsuite/
	PR tree-optimization/68474
	* gcc.dg/pr68474.c: New test.

From-SVN: r231115
2015-12-01 14:53:53 +00:00
Christian Bruel
5797378aab re PR target/68617 (arm ice output_operand: invalid %-code for -march=armv6k + thumb)
2015-12-01  Christian Bruel  <christian.bruel@st.com>

        PR target/68617
        * config/arm/arm.opt (unaligned_access): Save.
        * config/arm/arm-c.c (__ARM_FEATURE_UNALIGNED): Conditionally define.
        * config/arm/arm.c (arm_option_override): Move unaligned_access setting
        (arm_option_override_internal): ... here.
        * config/arm/arm.h (TARGET_32BIT_P): New macro.

// testsuite
        PR target/68617
        * gcc.target/arm/attr-unaligned-load-ice.c: New test.

From-SVN: r231114
2015-12-01 15:50:57 +01:00
Tom de Vries
f6b65a61e9 Move pr46032*.c tests
2015-12-01  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/pr46032.c: Move to ...
	* gcc.dg/vect/pr46032.c: here.  Add dg-require-effective-target
	vect_int.
	* gcc.dg/pr46032-2.c: Move to ...
	* gcc.dg/gomp/pr46032-2.c: ... here.  Drop dg-require-effective-target fopenmp.
	* gcc.dg/pr46032-3.c: Move to ...
	* gcc.dg/gomp/pr46032-3.c: ... here.  Drop dg-require-effective-target fopenmp.

From-SVN: r231113
2015-12-01 14:44:00 +00:00
Cesar Philippidis
2a70708e0b dump-parse-tree.c (show_omp_clauses): Handle optional num and static arguments for the gang clause.
gcc/fortran/
	* dump-parse-tree.c (show_omp_clauses): Handle optional num and static
	arguments for the gang clause.
	* gfortran.h (gfc_omp_clauses): Rename gang_expr as gang_num_expr.
	Add gang_static_expr.
	* openmp.c (gfc_free_omp_clauses): Update to free gang_num_expr and
	gang_static_expr.
	(match_oacc_clause_gang): Update to support both num and static in
	the same clause.
	(resolve_omp_clauses): Formatting.  Also handle gang_num_expr and
	gang_static_expr.
	(resolve_oacc_params_in_parallel): New const char arg argument.
	Use it to report more accurate gang, worker and vector clause errors.
	(resolve_oacc_loop_blocks): Update calls to
	resolve_oacc_params_in_parallel.
	* trans-openmp.c (gfc_trans_omp_clauses): Update the gimplification of
	the gang clause.
	(gfc_trans_oacc_combined_directive): Make use of gang_num_expr and
	gang_static_expr.  Remove OMP_LIST_REDUCTION from construct_clauses.

	gcc/testsuite/
	* gfortran.dg/goacc/gang-static.f95: Add tests for gang num arguments.
	* gfortran.dg/goacc/loop-2.f95: Update expected diagnostics.
	* gfortran.dg/goacc/loop-6.f95: Likewise.
	* gfortran.dg/goacc/loop-7.f95: New test.
	* gfortran.dg/goacc/reduction-2.f95: New test.

From-SVN: r231112
2015-12-01 06:27:11 -08:00
Richard Biener
4f0a0218d6 re PR tree-optimization/68379 (BB vectorization: definition in block 13 follows the use for SSA_NAME)
2015-12-01  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/68379
	* tree-vect-stmts.c (vectorizable_load): For BB vectorization
	always base loads on the first used DR of a group.
	* tree-vect-data-refs.c (vect_slp_analyze_and_verify_node_alignment):
	Compute alignment of the first scalar element unconditionally.

	* gcc.dg/torture/pr68379.c: New testcase.
	* gfortran.dg/pr68379-1.f90: Likewise.
	* gfortran.dg/pr68379-2.f: Likewise.

From-SVN: r231111
2015-12-01 14:24:54 +00:00
Richard Biener
2d3f4bf73c re PR ada/68590 (FAIL: gnat.dg/loop_optimization19.adb scan-tree-dump-not optimized "Index_Check")
2015-12-01  Richard Biener  <rguenther@suse.de>

	PR middle-end/68590
	* genmatch.c (struct capture_info): Add match_use_count.
	(capture_info::walk_match): Increment match_use_count.
	(dt_simplify::gen_1): For GENERIC, only wrap multi-use
	replacements in a save_expr if they occur more often than
	in the original expression.

From-SVN: r231110
2015-12-01 14:22:40 +00:00
Christophe Lyon
bb0d3b5e9b [testsuite] Fix pr46032* testcases.
2015-12-01  Christophe Lyon  <christophe.lyon@linaro.org>

	* gcc.dg/pr46032.c: Add dg-require-effective-target fopenmp.
	* gcc.dg/pr46032-2.c: Likewise.
	* gcc.dg/pr46032-3.c: Likewise.

From-SVN: r231109
2015-12-01 13:20:51 +01:00
Richard Biener
ece95567df re PR ipa/68470 (Internal Compiler Error observed by g++-4.9.2 and a few other versions (reported to Debian))
2015-12-01  Richard Biener  <rguenther@suse.de>

	PR ipa/68470
	* ipa-split.c (split_function): Handle main part not returning.

	* g++.dg/torture/pr68470.C: New testcase.

From-SVN: r231108
2015-12-01 11:35:21 +00:00