gcc.git
8 years agors6000: Implement cstore for signed Pmode register compares
Segher Boessenkool [Fri, 4 Dec 2015 17:21:49 +0000 (18:21 +0100)]
rs6000: Implement cstore for signed Pmode register compares

This implements cstore for the last case we do not yet handle, using
the superopt algo from the venerable CWG.  The only integer cases we
do still not handle after this are for -m32 -mpowerpc64.

* (cstore<mode>4_signed): New expander.
(cstore<mode>4): Call it.

From-SVN: r231284

8 years ago* tree-tailcall.c (find_tail_calls): Ignore GIMPLE_NOPs.
Jakub Jelinek [Fri, 4 Dec 2015 16:40:05 +0000 (17:40 +0100)]
* tree-tailcall.c (find_tail_calls): Ignore GIMPLE_NOPs.

From-SVN: r231282

8 years agore PR fortran/68684 (gcc/fortran/resolve.c:8748: bad if test ?)
Steven G. Kargl [Fri, 4 Dec 2015 16:37:54 +0000 (16:37 +0000)]
re PR fortran/68684 (gcc/fortran/resolve.c:8748: bad if test ?)

2015-12-04  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/68684
* resolve.c (resolve_lock_unlock_event): Fix logic faux pas.

From-SVN: r231281

8 years agore PR tree-optimization/68680 (On-stack VLA does not cause instrumentation with ...
Jakub Jelinek [Fri, 4 Dec 2015 16:32:22 +0000 (17:32 +0100)]
re PR tree-optimization/68680 (On-stack VLA does not cause instrumentation with -fstack-protector)

PR tree-optimization/68680
* calls.c (special_function_p): Return ECF_MAY_BE_ALLOCA for
BUILT_IN_ALLOCA{,_WITH_ALIGN}.  Don't check for __builtin_alloca
by name.

* gcc.target/i386/pr68680.c: New test.

From-SVN: r231279

8 years agore PR tree-optimization/68671 (gcc.dg/torture/pr66952.c FAILs with -fno-tree-dce)
Jakub Jelinek [Fri, 4 Dec 2015 16:23:27 +0000 (17:23 +0100)]
re PR tree-optimization/68671 (gcc.dg/torture/pr66952.c FAILs with -fno-tree-dce)

PR tree-optimization/68671
* tree-ssa-reassoc.c (maybe_optimize_range_tests): For basic
blocks starting with the successor of first bb we've modified
and ending with last_bb call reset_flow_sensitive_info_in_bb.

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

From-SVN: r231278

8 years agotree-ssa-reassoc.c (maybe_optimize_range_tests): Return boolean indicating if a gimpl...
Jeff Law [Fri, 4 Dec 2015 16:19:30 +0000 (09:19 -0700)]
tree-ssa-reassoc.c (maybe_optimize_range_tests): Return boolean indicating if a gimple conditional was optimized to true/false.

* tree-ssa-reassoc.c (maybe_optimize_range_tests): Return boolean
indicating if a gimple conditional was optimized to true/false.
(reassociate_bb): Bubble up return value from
maybe_optimize_range_tests.
(do_reassoc): Similarly, but for reassociate_bb.
(execute_reassoc): Return TODO_cleanup_cfg as needed.

* gcc.dg/tree-ssa/reassoc-43.c: New test.

From-SVN: r231277

8 years ago[AArch64] Don't allow -mgeneral-regs-only to change the .arch assembler directives
Kyrylo Tkachov [Fri, 4 Dec 2015 15:02:42 +0000 (15:02 +0000)]
[AArch64] Don't allow -mgeneral-regs-only to change the .arch assembler directives

* config/aarch64/aarch64.c (aarch64_override_options_internal):
Do not alter target_flags due to TARGET_GENERAL_REGS_ONLY_P.
* doc/invoke.texi (AArch64 options): Mention that -mgeneral-regs-only
does not affect the assembler directives.

* gcc.target/aarch64/mgeneral-regs_4.c: New test.

From-SVN: r231275

8 years agoS/390: Add -mbackchain options to fix test failure.
Dominik Vogt [Fri, 4 Dec 2015 14:35:14 +0000 (14:35 +0000)]
S/390: Add -mbackchain options to fix test failure.

gcc/testsuite/ChangeLog

* gcc.dg/Wframe-address.c: S/390 requires the -mbackchain option to
access arbitrary stack frames.
* gcc.dg/Wno-frame-address.c: Likewise.

From-SVN: r231273

8 years ago[PATCH 2/2] S/390: Implement "target" attribute.
Dominik Vogt [Fri, 4 Dec 2015 14:33:01 +0000 (14:33 +0000)]
[PATCH 2/2] S/390: Implement "target" attribute.

gcc/ChangeLog

* config/s390/s390.c (s390_asm_file_start): Implement hook function to
emit .machine and .machinemode to the top of the assembler file.
(TARGET_ASM_FILE_START): Provide target hook.
(s390_asm_output_machine_for_arch): Protect with
HAVE_AS_MACHINE_MACHINEMODE instead of S390_USE_TARGET_ATTRIBUTE.

gcc/testsuite/ChangeLog

* gcc.target/s390/asm-machine-1.c: Updated.
* gcc.target/s390/asm-machine-2.c: Updated.
* gcc.target/s390/asm-machine-3.c: Updated.
* gcc.target/s390/asm-machine-4.c: Updated.

From-SVN: r231272

8 years ago[PATCH 1/2] S/390: Implement "target" attribute.
Dominik Vogt [Fri, 4 Dec 2015 14:30:42 +0000 (14:30 +0000)]
[PATCH 1/2] S/390: Implement "target" attribute.

gcc/ChangeLog

* config/s390/s390.opt (s390_arch_string): Remove.
(s390_tune_string): Likewise.
(s390_cost_pointer): Add Variable.
(s390_tune_flags): Add TargetVariable.
(s390_arch_flags, march=, mbackchain, mdebug, mesa, mhard-dfp),
(mhard-float, mlong-double-128, mlong-double-64, mhtm, mvx),
(mpacked-stack, msmall-exec, msoft-float, mstack-guard=, mstack-size=),
(mtune=, mmvcle, mzvector, mzarch, mbranch-cost=, mwarn-dynamicstack),
(mwarn-framesize=): Save option.
(mno-stack-guard, mno-stack-guard): New option.
(mwarn-dynamicstack): Allow mno-warn-dynamicstack.
(mwarn-framesize=): Convert to UInteger (negative values are rejected
now).
* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Split setting
macros changeable through the GCC target pragma into a separate
function.
(s390_cpu_cpp_builtins): Likewise.
(s390_pragma_target_parse): New function, implement GCC target pragma
if enabled.
(s390_register_target_pragmas): Register s390_pragma_target_parse if
available.
* common/config/s390/s390-common.c (s390_handle_option):
Export.
Move setting s390_arch_flags to s390.c.
Remove s390_tune_flags.
Allow 0 as argument to -mstack-size (switch to default value).
Allow 0 as argument to -mstack-guard (switch off).
Remove now unnecessary explicit parsing code for -mwarn-framesize.
* config/s390/s390-protos.h (s390_handle_option): Export.
(s390_valid_target_attribute_tree): Export.
(s390_reset_previous_fndecl): Export.
* config/s390/s390-builtins.def: Use new macro B_GROUP to mark the start
and end of HTM and VX builtins.
(s390_asm_output_function_prefix): Declare hook.
(s390_asm_declare_function_size): Likewise.
* config/s390/s390-builtins.h (B_GROUP): Use macro.
* config/s390/s390-opts.h: Add comment about processor_type usage.
* config/s390/s390.h (TARGET_CPU_IEEE_FLOAT_P, TARGET_CPU_ZARCH_P),
(TARGET_CPU_LONG_DISPLACEMENT_P, TARGET_CPU_EXTIMM_P, TARGET_CPU_DFP_P),
(TARGET_CPU_Z10_P, TARGET_CPU_Z196_P, TARGET_CPU_ZEC12_P),
(TARGET_CPU_HTM_P, TARGET_CPU_Z13_P, TARGET_CPU_VX_P),
(TARGET_HARD_FLOAT_P, TARGET_LONG_DISPLACEMENT_P, TARGET_EXTIMM_P),
(TARGET_DFP_P, TARGET_Z10_P, TARGET_Z196_P, TARGET_ZEC12_P),
(TARGET_HTM_P, TARGET_Z13_P, TARGET_VX_P, TARGET_CPU_EXTIMM),
(TARGET_CPU_DFP, TARGET_CPU_Z10, TARGET_CPU_Z196, TARGET_CPU_ZEC12),
(TARGET_CPU_HTM, TARGET_CPU_Z13, TARGET_LONG_DISPLACEMENT),
(TARGET_EXTIMM, TARGET_DFP, TARGET_Z10, TARGET_Z196, TARGET_ZEC12),
(TARGET_Z13, TARGET_VX, S390_USE_TARGET_ATTRIBUTE),
(S390_USE_ARCHITECTURE_MODIFIERS, SWITCHABLE_TARGET),
(ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_FUNCTION_PREFIX): Likewise.
* config/s390/vecintrin.h: Use vector definitions even if __VEC__ is
undefined.
(vec_all_nan): Rewrite as macro using statement expressions to avoid
that the vector keyword needs to be defined when including the file.
(vec_all_numeric): Likewise.
(vec_any_nan): Likewise.
(vec_any_numeric):  Likewise.
* config/s390/s390.c (s390_previous_fndecl): New static variable.
(s390_set_current_function): New function.
(s390_cost): Wrapper macro to allow defining the cost table pointer in
the options file.
(processor_table): Table for march= and mtune= parsing.
(s390_init_builtins): Enable all builtins and types unconditionally.
(s390_expand_builtin): Generate an error message if builtin is not
supported by current options.
Correct an error message.
(s390_function_specific_restore): New function to set s390_cost.
(s390_asm_output_machine_for_arch): New function for emitting .machine
and .machinmode directives to the assembler file.
(s390_asm_output_function_prefix): Likewise.
(s390_asm_declare_function_size):  Likewise.
(s390_asm_output_function_label): Add mdebug output for feature testing.
(s390_option_override): Move implementation into internal function.
(s390_option_override_internal): Likewise.
Implement option overriding based on current options.
(s390_valid_target_attribute_inner_p): New function implementing target
attribute logic.
(s390_valid_target_attribute_tree): Likewise.
(s390_valid_target_attribute_p): Likewise.
(s390_reset_previous_fndecl): Likewise.
(s390_set_current_function): Likewise.
(TARGET_SET_CURRENT_FUNCTION): Provide target hook function.
(TARGET_OPTION_VALID_ATTRIBUTE_P): Likewise.
(TARGET_OPTION_RESTORE): Likewise.
* doc/extend.texi: S390: Document target attribute and pragma.
* config.in: Regenerated.
* configure: Regenerated.
* configure.ac: S390: Check for .machinemode and .machine in gas.
S390: Check for architecture modifiers support in gas.

gcc/testsuite/ChangeLog

* gcc.target/s390/asm-machine-1.c: New test.
* gcc.target/s390/asm-machine-2.c: New test.
* gcc.target/s390/asm-machine-3.c: New test.
* gcc.target/s390/asm-machine-4.c: New test.
* gcc.target/s390/target-attribute/tattr-1.c: New test.
* gcc.target/s390/target-attribute/tattr-2.c: New test.
* gcc.target/s390/target-attribute/tattr-3.c: New test.
* gcc.target/s390/target-attribute/tattr-4.c: New test.
* gcc.target/s390/target-attribute/tattr-5.c: New test.
* gcc.target/s390/target-attribute/tattr-6.c: New test.
* gcc.target/s390/target-attribute/tattr-7.c: New test.
* gcc.target/s390/target-attribute/tattr-8.c: New test.
* gcc.target/s390/target-attribute/tattr-9.c: New test.
* gcc.target/s390/target-attribute/tattr-10.c: New test.
* gcc.target/s390/target-attribute/tattr-11.c: New test.
* gcc.target/s390/target-attribute/tattr-12.c: New test.
* gcc.target/s390/target-attribute/tattr-13.c: New test.
* gcc.target/s390/target-attribute/tattr-14.c: New test.
* gcc.target/s390/target-attribute/tattr-15.c: New test.
* gcc.target/s390/target-attribute/tattr-16.c: New test.
* gcc.target/s390/target-attribute/tattr-17.c: New test.
* gcc.target/s390/target-attribute/tattr-18.c: New test.
* gcc.target/s390/target-attribute/tattr-19.c: New test.
* gcc.target/s390/target-attribute/tattr-arch-tune-1.c: New test.
* gcc.target/s390/target-attribute/tattr-arch-tune-2.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-1.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-2.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-3.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-4.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-5.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-6.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-7.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-8.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-9.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-10.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-11.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-12.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-13.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-14.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-15.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-16.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-17.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-18.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-19.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-20.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-21.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-22.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-23.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-24.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-25.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-26.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-27.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-28.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-29.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-30.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-31.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-32.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-1.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-2.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-3.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-4.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-5.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-6.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-7.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-8.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-9.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-10.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-11.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-12.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-13.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-14.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-15.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-16.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-17.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-18.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-19.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-20.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-21.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-22.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-23.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-24.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-25.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-26.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-27.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-28.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-29.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-30.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-31.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-32.c: New test.
* gcc.target/s390/target-attribute/tpragma-struct-vx-2.c: New test.
* gcc.target/s390/s390.exp (check_effective_target_target_attribute):
Add check whether target attribute is available.
Run test in target-attribute subdir.
* gcc.target/s390/s390-c++.exp
(check_effective_target_target_attribute): Likewise.

From-SVN: r231271

8 years agoAdd notinbranch/inbranch flags to attribute __simd__.
Kirill Yukhin [Fri, 4 Dec 2015 14:22:06 +0000 (14:22 +0000)]
Add notinbranch/inbranch flags to attribute __simd__.

gcc/
* c-family/c-common.c (c_common_attribute_table[]): Update max arguments
count for "simd" attribute.
(handle_simd_attribute): Parse "notinbranch" and "inbranch" arguments.
* doc/extend.texi ("simd"): Describe new flags.
gcc/testsuite/
* c-c++-common/attr-simd-4.c: New test.
* c-c++-common/attr-simd-5.c: New test.

From-SVN: r231270

8 years agosse.md (<avx512>_store<mode>_mask): Fix operand checked for alignment.
Ilya Enkovich [Fri, 4 Dec 2015 14:18:58 +0000 (14:18 +0000)]
sse.md (<avx512>_store<mode>_mask): Fix operand checked for alignment.

gcc/

* config/i386/sse.md (<avx512>_store<mode>_mask): Fix
operand checked for alignment.

From-SVN: r231269

8 years agonvptx.c (write_one_arg): Deal with prologue emission too.
Nathan Sidwell [Fri, 4 Dec 2015 14:02:27 +0000 (14:02 +0000)]
nvptx.c (write_one_arg): Deal with prologue emission too.

* config/nvptx/nvptx.c (write_one_arg): Deal with prologue
emission too. Change 'no_arg_types' to 'prototyped'.
(write_fn_proto):  Use write_one_arg for stdarg, static chain &
main.
(nvptx_declare_function_name): Use write_one_arg for prologue copies.

From-SVN: r231267

8 years ago* gcc.dg/graphite/id-28.c: Requires pthreads.
Nathan Sidwell [Fri, 4 Dec 2015 13:47:47 +0000 (13:47 +0000)]
* gcc.dg/graphite/id-28.c: Requires pthreads.

From-SVN: r231266

8 years agotree-ssa-sccvn.c (sccvn_dom_walker): Add unreachable_dom member and initialize it.
Richard Biener [Fri, 4 Dec 2015 12:32:26 +0000 (12:32 +0000)]
tree-ssa-sccvn.c (sccvn_dom_walker): Add unreachable_dom member and initialize it.

2015-12-04  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (sccvn_dom_walker): Add unreachable_dom
member and initialize it.
(sccvn_dom_walker::after_dom_children): Reset unreachable_dom
if necessary.
(sccvn_dom_walker::before_dom_children): If unreachable_dom
is set BB is not reachable either.  Set unreachable_dom
if not set and BB is unreachable.

From-SVN: r231262

8 years agobitmap.c (bitmap_find_bit): Guard the bitmap descriptor query with GATHER_STATISTICS.
Richard Biener [Fri, 4 Dec 2015 11:58:59 +0000 (11:58 +0000)]
bitmap.c (bitmap_find_bit): Guard the bitmap descriptor query with GATHER_STATISTICS.

2015-12-04  Richard Biener  <rguenther@suse.de>

* bitmap.c (bitmap_find_bit): Guard the bitmap descriptor
query with GATHER_STATISTICS.

From-SVN: r231261

8 years agore PR middle-end/65958 (-fstack-check breaks alloca on architectures using generic...
Eric Botcazou [Fri, 4 Dec 2015 11:57:15 +0000 (11:57 +0000)]
re PR middle-end/65958 (-fstack-check breaks alloca on architectures using generic stack checking)

PR middle-end/65958
* gimplify.c (struct gimplify_ctx): Turn boolean fields into 1-bit
fields, add keep_stack and reorder them.
(gimplify_bind_expr): Save gimplify_ctxp->keep_stack on entry then
set it to false.  Do not insert a stack save/restore pair if it has
been set to true by the gimplification of the statements.
Restore it to the saved value on exit if it is still false.
(gimplify_vla_decl): Do not set gimplify_ctxp->save_stack here.
(gimplify_call_expr) <BUILT_IN_ALLOCA[_WITH_ALIGN]>: New case.  Set
either save_stack or keep_stack depending on CALL_ALLOCA_FOR_VAR_P.
* doc/extend.texi (Variable Length): Document new behavior.
* doc/generic.texi (Blocks): Document new handling of VLAs.

From-SVN: r231260

8 years agore PR middle-end/65958 (-fstack-check breaks alloca on architectures using generic...
Eric Botcazou [Fri, 4 Dec 2015 11:52:04 +0000 (11:52 +0000)]
re PR middle-end/65958 (-fstack-check breaks alloca on architectures using generic stack checking)

PR middle-end/65958
* config/aarch64/aarch64-protos.h (aarch64_output_probe_stack-range):
Declare.
* config/aarch64/aarch64.md: Declare UNSPECV_BLOCKAGE and
UNSPEC_PROBE_STACK_RANGE.
(blockage): New instruction.
(probe_stack_range_<PTR:mode>): Likewise.
* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): New
function.
(aarch64_output_probe_stack_range): Likewise.
(aarch64_expand_prologue): Invoke aarch64_emit_probe_stack_range if
static builtin stack checking is enabled.
* config/aarch64/aarch64-linux.h (STACK_CHECK_STATIC_BUILTIN):
Define to 1.

Co-Authored-By: Tristan Gingold <gingold@adacore.com>
From-SVN: r231259

8 years agore PR testsuite/68681 (testcase gcc.dg/vect/pr45752.c fails on AArch64)
Richard Biener [Fri, 4 Dec 2015 09:56:28 +0000 (09:56 +0000)]
re PR testsuite/68681 (testcase gcc.dg/vect/pr45752.c fails on AArch64)

2015-12-04  Richard Biener  <rguenther@suse.de>

PR testsuite/68681
* gcc.dg/vect/pr45752.c: Add --param tree-reassoc-width=1.

From-SVN: r231253

8 years ago[ARM] PR target/68214: Delete IP-reg-clobbering call-through-mem patterns
Kyrylo Tkachov [Fri, 4 Dec 2015 09:44:42 +0000 (09:44 +0000)]
[ARM] PR target/68214: Delete IP-reg-clobbering call-through-mem patterns

PR target/68214
* config/arm/arm.md (*call_mem): Delete pattern.
(*call_value_mem): Likewise.
* config/arm/arm.c (output_call_mem): Delete.
* config/arm/arm-protos.h (output_call_mem): Delete prototype.

From-SVN: r231252

8 years agoatomics.md (atomic_store<mode>): Use predicate aarch64_sync_memory_operand.
Bin Cheng [Fri, 4 Dec 2015 09:35:22 +0000 (09:35 +0000)]
atomics.md (atomic_store<mode>): Use predicate aarch64_sync_memory_operand.

* config/aarch64/atomics.md (atomic_store<mode>): Use predicate
aarch64_sync_memory_operand.

From-SVN: r231251

8 years agoc-tree.h (c_build_va_arg): Adjust prototype.
Eric Botcazou [Fri, 4 Dec 2015 08:52:24 +0000 (08:52 +0000)]
c-tree.h (c_build_va_arg): Adjust prototype.

* c-tree.h (c_build_va_arg): Adjust prototype.
* c-parser.c (c_parser_postfix_expression): Adjust call to above.
* c-typeck.c (c_build_va_arg): Rename LOC parameter to LOC2, add LOC1
parameter, adjust throughout and issue an error if EXPR is a component
with reverse storage order.

From-SVN: r231250

8 years agore PR target/68655 (SSE2 cannot vec_perm of low and high part)
Jakub Jelinek [Fri, 4 Dec 2015 08:25:24 +0000 (09:25 +0100)]
re PR target/68655 (SSE2 cannot vec_perm of low and high part)

PR target/68655
* config/i386/i386.c (canonicalize_vector_int_perm): New function.
(expand_vec_perm_1): Use it and recurse if everything else
failed.  Use nd.perm instead of perm2.
(expand_vec_perm_even_odd_1): If testing_p, use gen_raw_REG
instead of gen_lowpart for the target.
(ix86_expand_vec_perm_const_1): Use canonicalize_vector_int_perm
and recurse if everything else failed.

* gcc.dg/torture/vshuf-4.inc (TESTS): Add one extra test.
* gcc.dg/torture/vshuf-4.inc (TESTS): Add two extra tests.

From-SVN: r231247

8 years agore PR rtl-optimization/68636 (unnecessary unaligned load on mips o32)
Richard Biener [Fri, 4 Dec 2015 08:17:50 +0000 (08:17 +0000)]
re PR rtl-optimization/68636 (unnecessary unaligned load on mips o32)

2015-12-04  Richard Biener  <rguenther@suse.de>

PR middle-end/68636
* builtins.c (get_pointer_alignment_1): Take care of byte to
bit alignment computation overflow.

From-SVN: r231246

8 years agore PR middle-end/67438 (~X op ~Y pattern relocation causes loop performance degradati...
Richard Biener [Fri, 4 Dec 2015 08:09:46 +0000 (08:09 +0000)]
re PR middle-end/67438 (~X op ~Y pattern relocation causes loop performance degradation on 32bit x86)

2015-12-04  Richard Biener  <rguenther@suse.de>

PR middle-end/67438
* match.pd: Guard ~X cmp ~Y -> Y cmp X and the variant with
a constant with single_use.

From-SVN: r231245

8 years agoaarch64.c (aarch64_legitimize_address): legitimize address expressions like Ra +...
Bin Cheng [Fri, 4 Dec 2015 03:26:19 +0000 (03:26 +0000)]
aarch64.c (aarch64_legitimize_address): legitimize address expressions like Ra + Rb + CONST and Ra + Rb<<SCALE + CONST.

* config/aarch64/aarch64.c (aarch64_legitimize_address): legitimize
address expressions like Ra + Rb + CONST and Ra + Rb<<SCALE + CONST.

Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
From-SVN: r231244

8 years agoparser.c (cp_ensure_no_oacc_routine): Update error message.
Cesar Philippidis [Fri, 4 Dec 2015 00:17:48 +0000 (16:17 -0800)]
parser.c (cp_ensure_no_oacc_routine): Update error message.

gcc/cp/
* parser.c (cp_ensure_no_oacc_routine): Update error message.
(cp_parser_oacc_routine): Likewise.
(cp_parser_late_parsing_oacc_routine): Likewise.  Update comment
describing this function.
(cp_finalize_oacc_routine): Update error message.

From-SVN: r231243

8 years agoDaily bump.
GCC Administrator [Fri, 4 Dec 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r231242

8 years ago* alias.c (alias_set_subset_of, alias_sets_must_conflict_p)
Jan Hubicka [Thu, 3 Dec 2015 21:57:15 +0000 (22:57 +0100)]
* alias.c (alias_set_subset_of, alias_sets_must_conflict_p)
Short circuit for !flag_strict_aliasing
(get_alias_set): Remove flag_strict_aliasing check.
(new_alias_set): Likewise.

From-SVN: r231239

8 years agoAdd cost model for Exynos M1
Evandro Menezes [Thu, 3 Dec 2015 16:08:40 +0000 (16:08 +0000)]
Add cost model for Exynos M1

gcc/
* config/aarch64/aarch64-cores.def: Use the Exynos M1 cost model.
* config/aarch64/aarch64.c (exynosm1_addrcost_table): New variable.
(exynosm1_regmove_cost): Likewise.
(exynosm1_vector_cost): Likewise.
(exynosm1_tunings): Likewise.
* config/arm/aarch-cost-tables.h (exynosm1_extra_costs): Likewise.
* config/arm/arm.c (arm_exynosm1_tune): Likewise.
* config/arm/arm-cores.def: Use the Exynos M1 cost model.

From-SVN: r231233

8 years agoEmpty the redirect_edge_var_map after each pass
Alan Lawrence [Thu, 3 Dec 2015 15:46:57 +0000 (15:46 +0000)]
Empty the redirect_edge_var_map after each pass

Alan Lawrence  <alan.lawrence@arm.com>
Richard Biener  <richard.guenther@gmail.com>

* cfgexpand.c (pass_expand::execute): Replace call to
redirect_edge_var_map_destroy with redirect_edge_var_map_empty.
* tree-ssa.c (delete_tree_ssa): Likewise.
* function.c (set_cfun): Call redirect_edge_var_map_empty.
* passes.c (execute_one_ipa_transform_pass, execute_one_pass): Likewise.
* tree-ssa.h (redirect_edge_var_map_destroy): Remove.
(redirect_edge_var_map_empty): New.
* tree-ssa.c (redirect_edge_var_map_destroy): Remove.
(redirect_edge_var_map_empty): New.

Co-Authored-By: Richard Biener <richard.guenther@gmail.com>
From-SVN: r231232

8 years ago[PR tree-optimization/68599] Avoid over-zealous optimization with -funsafe-loop-optim...
Jeff Law [Thu, 3 Dec 2015 15:40:08 +0000 (08:40 -0700)]
[PR tree-optimization/68599] Avoid over-zealous optimization with -funsafe-loop-optimizations

PR tree-optimization/68599
* loop-init.c (rtl_loop_init): Set LOOPS_HAVE_RECORDED_EXITS
in call to loop_optimizer_init.
* loop-iv.c (get_simple_loop_desc): Only allow unsafe loop
optimization to drop the assumptions/infinite notations if
the loop has a single exit.

From-SVN: r231231

8 years agoDocumentation tweaks for internal-fn-related optabs
Richard Sandiford [Thu, 3 Dec 2015 14:36:19 +0000 (14:36 +0000)]
Documentation tweaks for internal-fn-related optabs

As Bernd requested, this patch adds "This pattern cannot FAIL" to the
documentation of optabs that came to be mapped to interal functions.
For consistency I did the same for optabs that were already being
used for internal functions.

Many of the optabs weren't documented in the first place, so I added
entries for the missing ones.  Also, there were some inaccuracies in
the documentation of the rounding optabs.  The bitcount optabs said
that operand 0 has mode @var{m} and that operand 1 is under target
control, whereas it should be the other way around.

Tested on x86_64-linux-gnu.

gcc/
* doc/md.texi (vec_load_lanes@var{m}@var{n}): Document that
the pattern cannot FAIL.
(vec_store_lanes@var{m}@var{n}): Likewise.
(maskload@var{m}@var{n}): Likewise.
(maskstore@var{m}@var{n}): Likewise.  Fix a cut-&-paste error
in the name of the pattern.
(rsqrt@var{m}2): Document that mode m must be a scalar or vector
floating-point mode and that all operands have that mode.
(fmin@var{m}3, fmax@var{m}3): Likewise.  Document that the
pattern cannot FAIL.
(sqrt@var{m}2): Document that mode m must be a scalar or vector
floating-point mode, that all operands have that mode, and that
the patterns cannot FAIL.  Remove previous documentation referring
to @code{double} and @code{float}.
(fmod@var{m}3, remainder@var{m}3, cos@var{m}2, sin@var{m}2)
(sincos@var{m}3, log@var{m}2, pow@var{m}3, atan2@var{m}3)
(copysign@var{m}3): Likewise.
(exp@var{m}2): Likewise.  Explicitly state the base.
(floor@var{m}2): As for sqrt@var{m}2, but also specify the operands.
(btrunc@var{m}2, rint@var{m}2): Likewise.
(round@var{m}2): Likewise.  Fix incorrect description of rounding
effect.
(ceil@var{m}2): As for round@var{m}2.
(nearbyint@var{m}2): As for floor@var{m}2, but also mention that
the instruction must not raise an inexact condition.
(scalb@var{m}3): Document previously-undocumented pattern
(ldexp@var{m}3, tan@var{m}2, asin@var{m}2, acos@var{m}2)
(atan@var{m}2, expm1@var{m}2, exp10@var{m}2, exp2@var{m}2)
(log1p@var{m}2, log10@var{m}2, log2@var{m}2, logb@var{m}2)
(significand@var{m}2): Likewise.
(ffs@var{m}2): Fix the description of the modes, so that operand 1 has
mode m and operand 0 is defined more freely.  Document that @var{m}
can be a scalar or vector integer mode and that the pattern is not
allowed to FAIL.
(clz@var{m}2, ctz@var{m}2, popcount@var{m}2, parity@var{m}2): Likewise.
(clrsb@var{m}2): Likewise, except that the description of the
mode was missing in this case.

From-SVN: r231230

8 years agoAdd an rsqrt_optab and IFN_RSQRT internal function
Richard Sandiford [Thu, 3 Dec 2015 14:31:55 +0000 (14:31 +0000)]
Add an rsqrt_optab and IFN_RSQRT internal function

All current uses of builtin_reciprocal convert 1.0/sqrt into rsqrt.
This patch adds an rsqrt optab and associated internal function for
that instead.  We can then pick up the vector forms of rsqrt automatically,
fixing an AArch64 regression from my internal_fn patches.

With that change, builtin_reciprocal only needs to handle target-specific
built-in functions.  I've restricted the hook to those since, if we need
a reciprocal of another standard function later, I think there should be
a strong preference for adding a new optab and internal function for it,
rather than hiding the code in a backend.

Three targets implement builtin_reciprocal: aarch64, i386 and rs6000.
i386 and rs6000 already used the obvious rsqrt<mode>2 pattern names
for the instructions, so they pick up the new code automatically.
aarch64 needs a slight rename.

mn10300 is unusual in that its native operation is rsqrt, and
sqrt is approximated as 1.0/rsqrt.  The port also uses rsqrt<mode>2
for the rsqrt pattern, so after the patch we now pick it up as a native
operation.

Two other ports define rsqrt patterns: sh and v850.  AFAICT these
patterns aren't currently used, but I think the patch does what the
authors of the patterns would have expected.  There's obviously some
risk of fallout though.

Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabihf
(as a target without the hooks) and powerpc64-linux-gnu.

gcc/
* internal-fn.def (RSQRT): New function.
* optabs.def (rsqrt_optab): New optab.
* doc/md.texi (rsqrtM2): Document.
* target.def (builtin_reciprocal): Replace gcall argument with
a function decl.  Restrict hook to machine functions.
* doc/tm.texi: Regenerate.
* targhooks.h (default_builtin_reciprocal): Update prototype.
* targhooks.c (default_builtin_reciprocal): Likewise.
* tree-ssa-math-opts.c: Include internal-fn.h.
(internal_fn_reciprocal): New function.
(pass_cse_reciprocals::execute): Call it, and build a call to an
internal function on success.  Only call targetm.builtin_reciprocal
for machine functions.
* config/aarch64/aarch64-protos.h (aarch64_builtin_rsqrt): Remove
second argument.
* config/aarch64/aarch64-builtins.c (aarch64_expand_builtin_rsqrt):
Rename aarch64_rsqrt_<mode>2 to rsqrt<mode>2.
(aarch64_builtin_rsqrt): Remove md_fn argument and only handle
machine functions.
* config/aarch64/aarch64.c (use_rsqrt_p): New function.
(aarch64_builtin_reciprocal): Replace gcall argument with a
function decl.  Use use_rsqrt_p.  Remove optimize_size check.
Only handle machine functions.  Update call to aarch64_builtin_rsqrt.
(aarch64_optab_supported_p): New function.
(TARGET_OPTAB_SUPPORTED_P): Define.
* config/aarch64/aarch64-simd.md (aarch64_rsqrt_<mode>2): Rename to...
(rsqrt<mode>2): ...this.
* config/i386/i386.c (use_rsqrt_p): New function.
(ix86_builtin_reciprocal): Replace gcall argument with a
function decl.  Use use_rsqrt_p.  Remove optimize_insn_for_size_p
check.  Only handle machine functions.
(ix86_optab_supported_p): Handle rsqrt_optab.
* config/rs6000/rs6000.c (TARGET_OPTAB_SUPPORTED_P): Define.
(rs6000_builtin_reciprocal): Replace gcall argument with a
function decl.  Remove optimize_insn_for_size_p check.
Only handle machine functions.
(rs6000_optab_supported_p): New function.

From-SVN: r231229

8 years agoFix some issues with the ROP patch (PR 68471, 68472)
Bernd Schmidt [Thu, 3 Dec 2015 14:17:35 +0000 (14:17 +0000)]
Fix some issues with the ROP patch (PR 68471, 68472)

PR target/68471
PR target/68472
* config/i386/i386.c (ix86_mitigate_rop): Don't call
compute_bb_for_insn again.  Call df_insn_rescan_all.
* config/i386/i386.md (set_got_rex64): Override modrm_class.

* regrename.c (build_def_use): Ignore stack regs if regstack_completed.

testsuite/
* gcc.target/i386/rop1.c: New test.

From-SVN: r231228

8 years agonvptx-protos.h (npvptx_section_from_addr_space): Delete.
Nathan Sidwell [Thu, 3 Dec 2015 13:59:20 +0000 (13:59 +0000)]
nvptx-protos.h (npvptx_section_from_addr_space): Delete.

gcc/
* config/nvptx/nvptx-protos.h (npvptx_section_from_addr_space): Delete.
* config/nvptx/nvptx.c (enum nvptx_data_area): New.
(SYMBOL_DATA_AREA, SET_SYMBOL_DATA_AREA): New defines.
(nvptx_option_override): Set data ares for worker vars.
(nvptx_addr_space_from_sym): Delete.
(nvptx_encode_section_info): New.
(section_for_sym, section_for_decl): New.
(nvptx_maybe_convert_symbolic_operand): Get data area from symbol
flags,
(nvptx_section_from_addr_space): Delete.
(nvptx_section_for_decl): Delete.
(nvptx_output_aligned, nvptx_declare_object_name,
nvptx_assemble_undefined_decl): Use section_for_decl, remove
unnecessary checks.
(nvptx_print_operand): Add 'D', adjust 'A'.
(nvptx_expand_worker_addr): Adjust unspec generation.
(TARGET_ENCODE_SECTION_INFO): Override.
* config/nvptx/nvptx.h (ADDR_SPACE_GLOBAL, ADDR_SPACE_SHARED,
ADDR_SPACE_CONST, ADDR_SPACE_LOCAL, ADDR_SPACE_PARAM): Delete.
* config/nvptx/nvptx.md (UNSPEC_FROM_GLOBAL, UNSPEC_FROM_LOCAL,
UNSPEC_FROM_PARAM, UNSPEC_FROM_SHARED, UNSPEC_FROM_CONST,
UNSPEC_TO_GLOBAL, UNSPEC_TO_LOCAL, UNSPEC_TO_PARAM,
UNSPEC_TO_SHARED, UNSPEC_TO_CONST): Delete.
(UNSPEC_TO_GENERIC): New.
(nvptx_register_or_symbolic_operand): Delete.
(cvt_code, cvt_name, cvt_str): Delete.
(convaddr_<cvt_name><mode> [P]): Delete.
(convaddr_<mode> [P]): New.

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

From-SVN: r231227

8 years ago[RTL-ifcvt] PR rtl-optimization/68624: Clean up logic that checks for clobbering...
Kyrylo Tkachov [Thu, 3 Dec 2015 13:28:55 +0000 (13:28 +0000)]
[RTL-ifcvt] PR rtl-optimization/68624: Clean up logic that checks for clobbering conflicts across basic blocks

PR rtl-optimization/68624
* ifcvt.c (noce_try_cmove_arith): Check clobbers of temp regs in both
blocks if they exist and simplify the logic choosing the order to emit
them in.

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

From-SVN: r231226

8 years agore PR tree-optimization/66051 (can't vectorize reductions inside an SLP group)
Richard Biener [Thu, 3 Dec 2015 11:26:56 +0000 (11:26 +0000)]
re PR tree-optimization/66051 (can't vectorize reductions inside an SLP group)

2015-12-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/66051
* tree-vect-slp.c (vect_build_slp_tree_1): Remove restriction
on load group size.  Do not pass in vectorization_factor.
(vect_transform_slp_perm_load): Do not require any permute support.
(vect_build_slp_tree): Do not pass in vectorization factor.
(vect_analyze_slp_instance): Do not compute vectorization
factor estimate.  Use vector size instead of vectorization factor
estimate to split store groups for BB vectorization.

* gcc.dg/vect/slp-42.c: New testcase.

From-SVN: r231225

8 years agocfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return value is...
Ilya Enkovich [Thu, 3 Dec 2015 10:35:41 +0000 (10:35 +0000)]
cfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return value is allowed to have NULL bounds.

gcc/

* cfgexpand.c (expand_gimple_stmt_1): Return statement with
DECL as return value is allowed to have NULL bounds.

From-SVN: r231224

8 years agoGuard isl_ast_op_zdiv_r usage with HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
Tom de Vries [Thu, 3 Dec 2015 10:16:07 +0000 (10:16 +0000)]
Guard isl_ast_op_zdiv_r usage with HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS

2015-12-03  Tom de Vries  <tom@codesourcery.com>

* graphite-isl-ast-to-gimple.c (binary_op_to_tree)
(gcc_expression_from_isl_expr_op): Guard isl_ast_op_zdiv_r usage with
HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS.

From-SVN: r231223

8 years agoAdded missing ChangeLogs. Fix scan pattern for gcc.target/i386/avx512vl-vextracti32x4...
Kirill Yukhin [Thu, 3 Dec 2015 10:00:57 +0000 (10:00 +0000)]
Added missing ChangeLogs. Fix scan pattern for gcc.target/i386/avx512vl-vextracti32x4-1.c.

From-SVN: r231222

8 years agore PR tree-optimization/67800 (Missed vectorization opportunity on x86 (DOT_PROD_EXPR...
Richard Biener [Thu, 3 Dec 2015 08:43:22 +0000 (08:43 +0000)]
re PR tree-optimization/67800 (Missed vectorization opportunity on x86 (DOT_PROD_EXPR in non-reduction))

2015-12-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/67800
PR tree-optimization/68333
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Restore
restriction to reduction contexts but allow SLP reductions as well.
(vect_recog_sad_pattern): Likewise.
(vect_recog_widen_sum_pattern): Likewise.

* gcc.target/i386/vect-pr67800.c: New testcase.

From-SVN: r231221

8 years agore PR tree-optimization/68639 (ICE: Floating point exception)
Richard Biener [Thu, 3 Dec 2015 08:38:10 +0000 (08:38 +0000)]
re PR tree-optimization/68639 (ICE: Floating point exception)

2015-12-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/68639
* tree-vect-data-refs.c (dr_group_sort_cmp): Split groups
belonging to different loops.
(vect_analyze_data_ref_accesses): Likewise.

* gfortran.fortran-torture/compile/pr68639.f90: New testcase.

From-SVN: r231220

8 years agoipa-pure-const.c (ignore_edge_for_pure_const): New function.
Jan Hubicka [Thu, 3 Dec 2015 04:21:50 +0000 (05:21 +0100)]
ipa-pure-const.c (ignore_edge_for_pure_const): New function.

* ipa-pure-const.c (ignore_edge_for_pure_const): New function.
(propagate_pure_const): Use it; fix comments and optimize loops.

From-SVN: r231219

8 years agoipa-pure-const.c (ignore_edge): Rename to ...
Jan Hubicka [Thu, 3 Dec 2015 04:19:44 +0000 (05:19 +0100)]
ipa-pure-const.c (ignore_edge): Rename to ...

* ipa-pure-const.c (ignore_edge): Rename to ...
(ignore_edge_for_nothrow) ... this one; also ignore eges to
interposable functions or ones that can not throw.
(propagate_nothrow): Fix handling of availability.

From-SVN: r231218

8 years agore PR c++/68184 (Exception from a virtual function does not get caught)
Jan Hubicka [Thu, 3 Dec 2015 04:13:33 +0000 (05:13 +0100)]
re PR c++/68184 (Exception from a virtual function does not get caught)

PR ipa/68184
* g++.dg/torture/pr68184.C: New testcase.
* cgraphunit.c (cgraph_node::analyze): Set can_throw_external.

From-SVN: r231217

8 years agoDaily bump.
GCC Administrator [Thu, 3 Dec 2015 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r231216

8 years agore PR preprocessor/57580 (Repeated _Pragma message directives in macro causes problems)
Jakub Jelinek [Wed, 2 Dec 2015 23:53:43 +0000 (00:53 +0100)]
re PR preprocessor/57580 (Repeated _Pragma message directives in macro causes problems)

PR preprocessor/57580
* c-ppoutput.c (print): Change printed field to bool.
Move src_file last for smaller padding.
(init_pp_output): Set print.printed to false instead of 0.
(scan_translation_unit): Fix up formatting.  Set print.printed
to true after printing something other than newline.
(scan_translation_unit_trad): Set print.printed to true instead of 1.
(maybe_print_line_1): Set print.printed to false instead of 0.
(print_line_1): Likewise.
(do_line_change): Set print.printed to true instead of 1.
(cb_define, dump_queued_macros, cb_include, cb_def_pragma,
dump_macro): Set print.printed to false after printing newline.

* c-c++-common/cpp/pr57580.c: New test.
* c-c++-common/gomp/pr57580.c: New test.

From-SVN: r231213

8 years agohandle missing isl_ast_expr
Aditya Kumar [Wed, 2 Dec 2015 23:06:29 +0000 (23:06 +0000)]
handle missing isl_ast_expr

From ISL's documentation, isl_ast_op_zdiv_r is equal to zero iff the remainder
on integer division is zero.  Code generate a modulo operation for that.

* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Handle isl_ast_op_zdiv_r.
        (gcc_expression_from_isl_expr_op): Same.

* gcc.dg/graphite/id-28.c: New.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231212

8 years agodo not insert code outside the generated region
Aditya Kumar [Wed, 2 Dec 2015 23:01:24 +0000 (23:01 +0000)]
do not insert code outside the generated region

on the testcase we used to generate code in the function entry bb_0,
and that choked the cfg verifier.

* graphite-isl-ast-to-gimple.c (copy_bb_and_scalar_dependences): Check
that insertion point is still in the region.

* gfortran.dg/graphite/id-26.f03: New.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231211

8 years agoAllow running the testsuite in C++1z mode.
Jason Merrill [Wed, 2 Dec 2015 22:18:18 +0000 (17:18 -0500)]
Allow running the testsuite in C++1z mode.

gcc/cp/
* Make-lang.in (check-c++1z, check-c++-all): New.
gcc/testsuite/
* lib/g++.exp: Handle --stds= option.
* lib/g++-dg.exp (g++-dg-runtest): Use it.

From-SVN: r231209

8 years agocheck.c (gfc_check_event_query): New function.
Tobias Burnus [Wed, 2 Dec 2015 21:59:05 +0000 (22:59 +0100)]
check.c (gfc_check_event_query): New function.

2015-12-02  Tobias Burnus  <burnus@net-b.de>
    Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>

* check.c (gfc_check_event_query): New function.
* dump-parse-tree.c (show_code_node): Handle EXEC_EVENT_POST,
EXEC_EVENT_WAIT.
* expr.c (gfc_check_vardef_context): New check for event variables
definition.
* gfortran.h (gfc_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
(gfc_isym_id): GFC_ISYM_EVENT_QUERY.
(struct symbol_attribute): New field.
(gfc_exec_op): Add EXEC_EVENT_POST and EXEC_EVENT_WAIT.
* gfortran.texi: Document about new events functions and minor
changes.
* interface.c (compare_parameter): New check.
(gfc_procedure_use): New check for explicit procedure interface.
(add_subroutines): Add event_query.
* intrinsic.h (gfc_check_event_query,gfc_resolve_event_query):
New prototypes.
* iresolve.c (gfc_resolve_event_query): New function.
* iso-fortran-env.def (event_type): New type.
* match.c (event_statement,gfc_match_event_post,gfc_match_event_wait):
New functions.
(gfc_match_name): New event post and event wait.
* match.h (gfc_match_event_post,gfc_match_event_wait):
New prototypes.
* module.c (ab_attribute): Add AB_EVENT_COMP.
(attr_bits): Likewise.
(mio_symbol_attribute): Handle event_comp attribute.
* parse.c (decode_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
(next_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
(gfc_ascii_statement): Add ST_EVENT_POST, ST_EVENT_WAIT.
(parse_derived): Check for event_type components.
* resolve.c (resolve_allocate_expr): Check for event variable def.
(resolve_lock_unlock): Renamed to resolve_lock_unlock_event. It
includes logic for locks and events.
(gfc_resolve_code): Call it.
(gfc_resolve_symbol): New check for event variable to be a corray.
* st.c (gfc_free_statement): Handle new EXEC_EVENT_POST and
EXEC_EVENT_WAIT.
* trans-decl.c (gfor_fndecl_caf_event_post,gfor_fndecl_caf_event_wait,
gfor_fndecl_caf_event_query): New global variables.
(generate_coarray_sym_init): Checking for event_type.
(gfc_conv_procedure_call): Check for C bind attribute.
* trans-intrinsic.c (conv_intrinsic_event_query): New function.
(conv_intrinsic_move_alloc): Call it.
* trans-stmt.c (gfc_trans_lock_unlock): Passing address
of actual argument.
(gfc_trans_sync): Likewise.
(gfc_trans_event_post_wait): New function.
* trans-stmt.h (gfc_trans_event_post_wait): New prototype.
* trans-types.c (gfc_get_derived_type): Integer_kind as event_type.
* trans.c (gfc_allocate_using_lib): New argument and logic for events.
(gfc_allocate_allocatable): Passing new argument.
(trans_code): Handle EXEC_EVENT_POST, EXEC_EVENT_WAIT.
* trans.h (gfc_coarray_type): New elements.
(gfor_fndecl_caf_event_post,gfor_fndecl_caf_event_wait,
gfor_fndecl_caf_event_query): Declare them.

2015-12-02  Tobias Burnus  <burnus@net-b.de>
    Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>

* gfortran.dg/coarray/event_1.f90: New.
* gfortran.dg/coarray/event_2.f90: New.

Co-Authored-By: Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
From-SVN: r231208

8 years agofix PR68550: do not handle ISL loop peeled statements
Aditya Kumar [Wed, 2 Dec 2015 20:40:17 +0000 (20:40 +0000)]
fix PR68550: do not handle ISL loop peeled statements

In case ISL did some loop peeling, like this:

  S_8(0);
  for (int c1 = 1; c1 <= 5; c1 += 1) {
    S_8(c1);
  }
  S_8(6);

we should not copy loop-phi nodes in S_8(0) or in S_8(6).

PR tree-optimization/68550
* graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Add dump.
(copy_bb_and_scalar_dependences): Do not code generate loop peeled
statements.

* gfortran.dg/graphite/pr68550-1.f90: New.
* gfortran.dg/graphite/pr68550-2.f90: New.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231206

8 years agore PR c/68513 (ICE in gimplify_expr, at gimplify.c:8832, c_maybe_const_expr in IL)
Marek Polacek [Wed, 2 Dec 2015 20:01:37 +0000 (20:01 +0000)]
re PR c/68513 (ICE in gimplify_expr, at gimplify.c:8832, c_maybe_const_expr in IL)

PR c/68513
* gcc.dg/pr68513.c: New test.

From-SVN: r231205

8 years agore PR fortran/63861 (OpenACC coarray ICE (also with OpenMP?))
Cesar Philippidis [Wed, 2 Dec 2015 19:59:27 +0000 (11:59 -0800)]
re PR fortran/63861 (OpenACC coarray ICE  (also with OpenMP?))

gcc/fortran/
PR fortran/63861
* openmp.c (gfc_match_omp_clauses): Allow subarrays for acc reductions.
(resolve_omp_clauses): Error on any acc reductions on arrays.

gcc/testsuite/
* gfortran.dg/goacc/array-reduction.f90: New test.
* gfortran.dg/goacc/assumed.f95: Update expected diagnostics.
* gfortran.dg/goacc/coarray.f95: Likewise.
* gfortran.dg/goacc/coarray_2.f90: Likewise.
* gfortran.dg/goacc/reduction-2.f95: Likewise.
* gfortran.dg/goacc/reduction.f95: Likewise.

From-SVN: r231204

8 years agoFix c++/67337 (segfault in mangle.c)
Markus Trippelsdorf [Wed, 2 Dec 2015 19:57:55 +0000 (19:57 +0000)]
Fix c++/67337 (segfault in mangle.c)

PR c++/67337
* mangle.c (write_template_prefix): Guard against context==NULL.

From-SVN: r231203

8 years agoconfigure.ac: Check assembler support for R_PPC64_ENTRY relocation.
Ulrich Weigand [Wed, 2 Dec 2015 19:52:53 +0000 (19:52 +0000)]
configure.ac: Check assembler support for R_PPC64_ENTRY relocation.

* configure.ac: Check assembler support for R_PPC64_ENTRY relocation.
* configure: Regenerate.
* config.in: Regenerate.
* config/rs6000/rs6000.c (rs6000_global_entry_point_needed_p): New
function.
(rs6000_output_function_prologue): Use it instead of checking
cfun->machine->r2_setup_needed.  Use internal labels instead of
GNU as local label extension.  Handle ELFv2 large code model.
(rs6000_output_mi_thunk): Do not set cfun->machine->r2_setup_needed.
(rs6000_elf_declare_function_name): Handle ELFv2 large code model.

From-SVN: r231202

8 years agore PR target/68647 (__builtin_popcountll doesn't generate popcnt instructions when...
Jakub Jelinek [Wed, 2 Dec 2015 19:39:11 +0000 (20:39 +0100)]
re PR target/68647 (__builtin_popcountll doesn't generate popcnt instructions when targeting -mpopcnt on x86_32)

PR target/68647
* optabs.c (expand_doubleword_popcount, expand_doubleword_parity):
New functions.
(expand_unop): Use them.

* gcc.target/i386/pr68647.c: New test.

From-SVN: r231201

8 years agore PR c++/68653 (ICE: in nonnull_arg_p, at tree.c:13853)
Marek Polacek [Wed, 2 Dec 2015 19:29:17 +0000 (19:29 +0000)]
re PR c++/68653 (ICE: in nonnull_arg_p, at tree.c:13853)

PR c++/68653
* tree.c (nonnull_arg_p): Allow OFFSET_TYPE.

* g++.dg/warn/nonnull3.C: New test.

From-SVN: r231200

8 years agore PR go/66147 (go fails to cross build)
Ian Lance Taylor [Wed, 2 Dec 2015 19:27:58 +0000 (19:27 +0000)]
re PR go/66147 (go fails to cross build)

./: PR go/66147
* Makefile.tpl (HOST_EXPORTS): Add XGCC_FLAGS_FOR_TARGET.
* Makefile.in: Regenerate.
gotools/:
PR go/66147
* Makefile.am (GOCOMPILER): In NATIVE case, add
$(XGCC_FLAGS_FOR_TARGET).

From-SVN: r231199

8 years agoDo constant folding in warn_* functions.
Jason Merrill [Wed, 2 Dec 2015 19:04:48 +0000 (14:04 -0500)]
Do constant folding in warn_* functions.

gcc/c-family/
* c-common.c (fold_for_warn): New.
(warn_logical_operator, warn_tautological_cmp)
(check_function_arguments_recurse, maybe_warn_bool_compare): Use it.
gcc/cp/
* call.c (build_new_op_1): Don't fold arguments to
warn_logical_operator or maybe_warn_bool_compare.

From-SVN: r231198

8 years agoIntroduce cp_fold_rvalue.
Jason Merrill [Wed, 2 Dec 2015 19:04:43 +0000 (14:04 -0500)]
Introduce cp_fold_rvalue.

* cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): New.
(c_fully_fold): Use cp_fold_rvalue.
(cp_fold): Use them for rvalue operands.

From-SVN: r231197

8 years agoDefine c_fully_fold separately for C and C++.
Jason Merrill [Wed, 2 Dec 2015 19:04:38 +0000 (14:04 -0500)]
Define c_fully_fold separately for C and C++.

gcc/c-family/
* c-common.c (c_disable_warnings, c_enable_warnings, c_fully_fold)
(c_fully_fold_internal, decl_constant_value_for_optimization):
Move to c/c-fold.c.
* c-common.h: Don't declare decl_constant_value_for_optimization.
gcc/c/
* c-fold.c (c_disable_warnings, c_enable_warnings, c_fully_fold)
(c_fully_fold_internal, decl_constant_value_for_optimization):
Move from c-common.c.
* c-tree.h: Declare decl_constant_value_for_optimization.
* Make-lang.in (C_AND_OBJC_OBJS): Add c-fold.o.
gcc/cp/
* cp-gimplify.c (c_fully_fold): Define.

From-SVN: r231196

8 years ago* cp-gimplify.c (cp_fold): Use fold_build*.
Jason Merrill [Wed, 2 Dec 2015 19:04:32 +0000 (14:04 -0500)]
* cp-gimplify.c (cp_fold): Use fold_build*.

From-SVN: r231195

8 years agoFix TYPE_MAIN_VARIANT construction for arrays of qualified typedefs (PR c/68162).
Joseph Myers [Wed, 2 Dec 2015 18:24:23 +0000 (18:24 +0000)]
Fix TYPE_MAIN_VARIANT construction for arrays of qualified typedefs (PR c/68162).

PR c/68162 reports a spurious warning about incompatible types
involving arrays of const double, constructed in one place using a
typedef for const double and in another place literally using const
double.

The problem is that the array of the typedef was incorrectly
constructed without a TYPE_MAIN_VARIANT being an array of unqualified
elements as it should be (though it seems some more recent change
resulted in this producing incorrect diagnostics, likely the support
for C++-style handling of arrays of qualified type).  This patch fixes
the logic in grokdeclarator to determine first_non_attr_kind, which is
used to determine whether it is necessary to use the TYPE_MAIN_VARIANT
of the type in the declaration specifiers.

However, fixing that logic introduces a failure of
gcc.dg/debug/dwarf2/pr47939-4.c, a test introduced along with
first_non_attr_kind.  Thus, it is necessary to track the original
qualified typedef when qualifying an array type, to use it rather than
a newly-constructed type, to avoid regressing regarding typedef names
in debug info.  This is done along lines I suggested in
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47939#c6>: track the
original type and the number of levels of array indirection at which
it appears, and, in possibly affected cases, pass extra arguments to
c_build_qualified_type (with default arguments to avoid needing to
pass those extra arguments explicitly everywhere).  Given Richard's
recent fix to dwarf2out.c, this allows the C bug to be fixed without
causing debug information regressions.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc/c:
PR c/68162
* c-decl.c (grokdeclarator): Set first_non_attr_kind before
following link from declarator to next declarator.  Track original
qualified type and pass it to c_build_qualified_type.
* c-typeck.c (c_build_qualified_type): Add arguments
orig_qual_type and orig_qual_indirect.

gcc/c-family:
PR c/68162
* c-common.h (c_build_qualified_type): Add extra default
arguments.

gcc/cp:
PR c/68162
* tree.c (c_build_qualified_type): Add extra arguments.

gcc/testsuite:
PR c/68162
* gcc.dg/pr68162-1.c: New test.

From-SVN: r231194

8 years agoconfigure.ac: Move AM_ENABLE_MULTILIB before GCC_LIBSTDCXX_RAW_CXX_FLAGS.
Matthias Klose [Wed, 2 Dec 2015 18:18:51 +0000 (18:18 +0000)]
configure.ac: Move AM_ENABLE_MULTILIB before GCC_LIBSTDCXX_RAW_CXX_FLAGS.

2015-12-02  Matthias Klose  <doko@ubuntu.com>

        * configure.ac: Move AM_ENABLE_MULTILIB before
        GCC_LIBSTDCXX_RAW_CXX_FLAGS.
        * configure: Regenerate.

From-SVN: r231193

8 years agonvptx.c (enum nvptx_shuffle_kind): New.
Nathan Sidwell [Wed, 2 Dec 2015 17:28:32 +0000 (17:28 +0000)]
nvptx.c (enum nvptx_shuffle_kind): New.

* config/nvptx/nvptx.c (enum nvptx_shuffle_kind): New.  Absorb
SHUFFLE defines.
(nvptx_gen_shuffle, nvptx_print_operand, nvptx_expand_shuffle): Adjust.

From-SVN: r231192

8 years agofix invalid bounds on array refs
Aditya Kumar [Wed, 2 Dec 2015 17:11:52 +0000 (17:11 +0000)]
fix invalid bounds on array refs

While enabling graphite in -O3 we found a Fortran testcase that fails
because the max of the type domain is -1.  We used to add that as a constraint
to the elements accessed by the array, leading to a unfeasible constraint:
0 <= i <= -1.  Having that constraint, drops the data reference as that says
that there are no elements accessed in the array.

* graphite-dependences.c (scop_get_reads): Add extra dumps.
(scop_get_must_writes): Same.
(scop_get_may_writes): Same.
(compute_deps): Same.
* graphite-sese-to-poly.c (bounds_are_valid): New.
(pdr_add_data_dimensions): Call bounds_are_valid.

* gfortran.dg/graphite/run-id-3.f90: New.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231191

8 years agorename flag_loop_optimize_isl to flag_loop_nest_optimize
Aditya Kumar [Wed, 2 Dec 2015 17:11:41 +0000 (17:11 +0000)]
rename flag_loop_optimize_isl to flag_loop_nest_optimize

* common.opt (flag_loop_optimize_isl): Renamed flag_loop_nest_optimize.
* graphite-poly.c (apply_poly_transforms): Same.
* graphite.c (gate_graphite_transforms): Same.
* toplev.c (process_options): Same.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231190

8 years agore PR c++/68290 (g++.dg/concepts/auto1.C FAILs)
Eric Botcazou [Wed, 2 Dec 2015 16:41:02 +0000 (16:41 +0000)]
re PR c++/68290 (g++.dg/concepts/auto1.C FAILs)

PR c++/68290
* constraint.cc (make_constrained_auto): Move to...
* pt.c (make_auto_1): Add set_canonical parameter and set
TYPE_CANONICAL on the type only if it is true.
(make_decltype_auto): Adjust call to make_auto_1.
(make_auto): Likewise.
(splice_late_return_type): Likewise.
(make_constrained_auto): ...here.  Call make_auto_1 instead of
make_auto and pass false.  Set TYPE_CANONICAL directly.

From-SVN: r231189

8 years agomips.c (mips_emit_probe_stack_range): Adjust.
Eric Botcazou [Wed, 2 Dec 2015 16:34:58 +0000 (16:34 +0000)]
mips.c (mips_emit_probe_stack_range): Adjust.

* config/mips/mips.c (mips_emit_probe_stack_range): Adjust.
(mips_output_probe_stack_range): Rotate the loop and simplify.

From-SVN: r231188

8 years agoaarch64.md: New pattern.
David Sherwood [Wed, 2 Dec 2015 16:29:17 +0000 (16:29 +0000)]
aarch64.md: New pattern.

2015-12-02  David Sherwood  <david.sherwood@arm.com>

    gcc/
* config/aarch64/aarch64.md: New pattern.
* config/aarch64/aarch64-simd.md: Likewise.
* config/aarch64/iterators.md: New unspecs, iterators.
    gcc/testsuite
* gcc.target/aarch64/fmaxmin.c: New test.

From-SVN: r231187

8 years agoTrack indirect calls for call site information in debug info
Pierre-Marie de Rodat [Wed, 2 Dec 2015 15:57:34 +0000 (15:57 +0000)]
Track indirect calls for call site information in debug info

gcc/ChangeLog:

* dwarf2out.c (dwar2out_var_location): In addition to notes,
process indirect calls whose target is compile-time known.
Enhance pattern matching to get the SYMBOL_REF they embed.
(gen_subprogram_die): Handle such calls.
* final.c (final_scan_insn): For call instructions, invoke the
var_location debug hook only after the call has been emitted.

From-SVN: r231185

8 years agoSome OpenACC host_data cleanup
Thomas Schwinge [Wed, 2 Dec 2015 15:53:34 +0000 (16:53 +0100)]
Some OpenACC host_data cleanup

gcc/c/
* c-parser.c (c_parser_omp_clause_name)
(c_parser_oacc_all_clauses): Alphabetical sorting.
gcc/cp/
* parser.c (cp_parser_omp_clause_name)
(cp_parser_oacc_all_clauses): Alphabetical sorting.
* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_USE_DEVICE.
gcc/testsuite/
* c-c++-common/goacc/host_data-5.c: New file.
* c-c++-common/goacc/host_data-6.c: Likewise.
* gfortran.dg/goacc/coarray.f95: XFAIL.
* gfortran.dg/goacc/coarray_2.f90: Adjust dg-excess-errors
directive.
* gfortran.dg/goacc/host_data-tree.f95: Remove dg-prune-output
directive.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/host_data-2.c: Restrict to
target openacc_nvidia_accel_selected.
* testsuite/libgomp.oacc-c-c++-common/host_data-4.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/host_data-5.c: Likewise.
* testsuite/libgomp.oacc-c-c++-common/host_data-3.c: Remove file.
* testsuite/libgomp.oacc-c-c++-common/host_data-6.c: Remove file.

Co-Authored-By: James Norris <James_Norris@mentor.com>
Co-Authored-By: Julian Brown <julian@codesourcery.com>
From-SVN: r231184

8 years agoFix oacc kernels default mapping for scalars
Tom de Vries [Wed, 2 Dec 2015 15:48:45 +0000 (15:48 +0000)]
Fix oacc kernels default mapping for scalars

2015-12-02  Tom de Vries  <tom@codesourcery.com>

* gimplify.c (enum gimplify_omp_var_data): Add enum value
GOVD_MAP_FORCE.
(oacc_default_clause): Fix default for scalars in oacc kernels.
(gimplify_adjust_omp_clauses_1): Handle GOVD_MAP_FORCE.

* c-c++-common/goacc/kernels-default-2.c: New test.
* c-c++-common/goacc/kernels-default.c: New test.

From-SVN: r231183

8 years agoMark pointers to allocated target vars as restricted, if possible
Tom de Vries [Wed, 2 Dec 2015 15:48:35 +0000 (15:48 +0000)]
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

8 years agoFix ambiguity with multiple enable_shared_from_this bases
Jonathan Wakely [Wed, 2 Dec 2015 15:08:18 +0000 (15:08 +0000)]
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

8 years agonvptx-protos.h (nvptx_output_mov_insn): Declare.
Nathan Sidwell [Wed, 2 Dec 2015 14:57:54 +0000 (14:57 +0000)]
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

8 years agotree.h (tree_invariant_p): Declare.
Richard Biener [Wed, 2 Dec 2015 14:50:32 +0000 (14:50 +0000)]
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

8 years agoHandle BUILT_IN_GOACC_PARALLEL in ipa-pta
Tom de Vries [Wed, 2 Dec 2015 13:32:51 +0000 (13:32 +0000)]
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

8 years agovect-strided-a-u8-i8-gap7-big-array.c: Fix uninitialized y guarding a call to abort ().
Richard Biener [Wed, 2 Dec 2015 11:49:48 +0000 (11:49 +0000)]
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

8 years agoAVX-512. Split out mask version for vec_extract_hi_<mode>.
Kirill Yukhin [Wed, 2 Dec 2015 11:07:42 +0000 (11:07 +0000)]
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

8 years agors6000: Optimise SImode cstore on 64-bit
Segher Boessenkool [Wed, 2 Dec 2015 10:56:15 +0000 (11:56 +0100)]
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

8 years agore PR middle-end/68570 (ICE on valid code at -O1, -O2 and -O3 on x86_64-linux-gnu)
Marek Polacek [Wed, 2 Dec 2015 10:22:23 +0000 (10:22 +0000)]
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

8 years agore PR tree-optimization/68625 (Segmentation fault in useless_type_conversion_p)
Richard Biener [Wed, 2 Dec 2015 09:47:43 +0000 (09:47 +0000)]
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

8 years agoPR 68432: Add a target hook to control size/speed optab choices
Richard Sandiford [Wed, 2 Dec 2015 09:08:49 +0000 (09:08 +0000)]
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

8 years agoCheck for invalid FAILs
Richard Sandiford [Wed, 2 Dec 2015 09:06:28 +0000 (09:06 +0000)]
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

8 years agoS/390: Make constant checking more strict
Andreas Krebbel [Wed, 2 Dec 2015 08:05:04 +0000 (08:05 +0000)]
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

8 years agoS/390: vec_set mode DI->SI for shift_count
Andreas Krebbel [Wed, 2 Dec 2015 08:03:35 +0000 (08:03 +0000)]
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

8 years agoS/390: Fix vec_splat_* builtins.
Andreas Krebbel [Wed, 2 Dec 2015 08:02:05 +0000 (08:02 +0000)]
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

8 years agoS/390: Sort builtin types - cleanup only.
Andreas Krebbel [Wed, 2 Dec 2015 07:59:52 +0000 (07:59 +0000)]
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

8 years agoS/390: Fix RT flag in vstrc instruction.
Andreas Krebbel [Wed, 2 Dec 2015 07:57:24 +0000 (07:57 +0000)]
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

8 years agoS/390: Enable vrepi constants.
Andreas Krebbel [Wed, 2 Dec 2015 07:55:40 +0000 (07:55 +0000)]
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

8 years agoS/390: Fix vrepi constraint letter.
Andreas Krebbel [Wed, 2 Dec 2015 07:53:03 +0000 (07:53 +0000)]
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

8 years agoS/390: Further bswap enhancements.
Andreas Krebbel [Wed, 2 Dec 2015 07:49:47 +0000 (07:49 +0000)]
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

8 years agoS/390: Enable 64 bit atomic tests with -m31 -mzarch.
Andreas Krebbel [Wed, 2 Dec 2015 07:45:50 +0000 (07:45 +0000)]
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

8 years ago[PATCH] Fix PR68029
Jiri Engelthaler [Wed, 2 Dec 2015 07:42:58 +0000 (07:42 +0000)]
[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

8 years agoS/390: bswap64 testcases require -mzarch.
Andreas Krebbel [Wed, 2 Dec 2015 07:41:53 +0000 (07:41 +0000)]
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

8 years agoS/390: bswap testcases require -march=z900 to work with -m31.
Andreas Krebbel [Wed, 2 Dec 2015 07:37:23 +0000 (07:37 +0000)]
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

8 years agore PR c/68533 (bogus location for "warning: ‘struct s3’ declared inside parameter...
Jakub Jelinek [Wed, 2 Dec 2015 07:33:06 +0000 (08:33 +0100)]
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