gcc.git
8 years agoDaily bump.
GCC Administrator [Sat, 4 Jun 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237087

8 years agore PR tree-optimization/71316 (test case gcc.dg/tree-ssa/ssa-dom-thread-4.c fails...
Jeff Law [Fri, 3 Jun 2016 23:12:39 +0000 (17:12 -0600)]
re PR tree-optimization/71316 (test case gcc.dg/tree-ssa/ssa-dom-thread-4.c fails starting with r236831)

PR tree-optimization/71316
* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Update expected output.

From-SVN: r237083

8 years agovect-live-1.c: Remove dg-options.
Jakub Jelinek [Fri, 3 Jun 2016 21:25:10 +0000 (23:25 +0200)]
vect-live-1.c: Remove dg-options.

* gcc.dg/vect/vect-live-1.c: Remove dg-options.  Add
dg-additional-options with just -fno-tree-scev-cprop in it.
* gcc.dg/vect/vect-live-2.c: Likewise.
* gcc.dg/vect/vect-live-5.c: Likewise.
* gcc.dg/vect/vect-live-slp-1.c: Likewise.
* gcc.dg/vect/vect-live-slp-2.c: Likewise.
* gcc.dg/vect/vect-live-slp-3.c: Likewise.

From-SVN: r237082

8 years ago* sr.po: Update.
Joseph Myers [Fri, 3 Jun 2016 21:07:36 +0000 (22:07 +0100)]
* sr.po: Update.

From-SVN: r237079

8 years agore PR c++/27100 (ICE with multiple friend declarations)
Patrick Palka [Fri, 3 Jun 2016 20:42:08 +0000 (20:42 +0000)]
re PR c++/27100 (ICE with multiple friend declarations)

Fix PR c++/27100

gcc/cp/ChangeLog:

PR c++/27100
* decl.c (duplicate_decls): Properly copy the
DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.

gcc/testsuite/ChangeLog:

PR c++/27100
* g++.dg/other/friend6.C: New test.

From-SVN: r237078

8 years agors6000-c.c (c/c-tree.h): Add #include.
Bill Schmidt [Fri, 3 Jun 2016 18:40:26 +0000 (18:40 +0000)]
rs6000-c.c (c/c-tree.h): Add #include.

[gcc]

2016-06-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* rs6000-c.c (c/c-tree.h): Add #include.
(altivec_resolve_overloaded_builtin): Handle ARRAY_TYPE arguments
in C++ when found in the base position of vec_ld or vec_st.

[gcc/testsuite]

2016-06-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* g++.dg/torture/ppc-ldst-array.C: New.

From-SVN: r237077

8 years agotree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid use of profile...
Jan Hubicka [Fri, 3 Jun 2016 17:00:19 +0000 (19:00 +0200)]
tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid use of profile unless profile status is PROFILE_READ.

* tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Avoid
use of profile unless profile status is PROFILE_READ.
* profile.c (compute_branch_probabilities): Set profile status
only after reporting predictor hitrates.

From-SVN: r237076

8 years agoAdd option for whether ceil etc. can raise "inexact", adjust x86 conditions.
Joseph Myers [Fri, 3 Jun 2016 15:49:04 +0000 (16:49 +0100)]
Add option for whether ceil etc. can raise "inexact", adjust x86 conditions.

In ISO C99/C11, the ceil, floor, round and trunc functions may or may
not raise the "inexact" exception for noninteger arguments.  Under TS
18661-1:2014, the C bindings for IEEE 754-2008, these functions are
prohibited from raising "inexact", in line with the general rule that
"inexact" is only when the mathematical infinite precision result of a
function differs from the result after rounding to the target type.

GCC has no option to select TS 18661 requirements for not raising
"inexact" when expanding built-in versions of these functions inline.
Furthermore, even given such requirements, the conditions on the x86
insn patterns for these functions are unnecessarily restrictive.  I'd
like to make the out-of-line glibc versions follow the TS 18661
requirements; in the cases where this slows them down (the cases using
x87 floating point), that makes it more important for inline versions
to be used when the user does not care about "inexact".

This patch fixes these issues.  A new option
-fno-fp-int-builtin-inexact is added to request TS 18661 rules for
these functions; the default -ffp-int-builtin-inexact reflects that
such exceptions are allowed by C99 and C11.  (The intention is that if
C2x incorporates TS 18661-1, then the default would change in C2x
mode.)

The x86 built-ins for rint (x87, SSE2 and SSE4.1) are made
unconditionally available (no longer depending on
-funsafe-math-optimizations or -fno-trapping-math); "inexact" is
correct for noninteger arguments to rint.  For floor, ceil and trunc,
the x87 and SSE2 built-ins are OK if -ffp-int-builtin-inexact or
-fno-trapping-math (they may raise "inexact" for noninteger
arguments); the SSE4.1 built-ins are made to use ROUND_NO_EXC so that
they do not raise "inexact" and so are OK unconditionally.

Now, while there was no semantic reason for depending on
-funsafe-math-optimizations, the insn patterns had such a dependence
because of use of gen_truncxf<mode>2_i387_noop to truncate back to
SFmode or DFmode after using frndint in XFmode.  In this case a no-op
truncation is safe because rounding to integer always produces an
exactly representable value (the same reason why IEEE semantics say it
shouldn't produce "inexact") - but of course that insn pattern isn't
safe because it would also match cases where the truncation is not in
fact a no-op.  To allow frndint to be used for SFmode and DFmode
without that unsafe pattern, the relevant frndint patterns are
extended to SFmode and DFmode or new SFmode and DFmode patterns added,
so that the frndint operation can be represented in RTL as an
operation acting directly on SFmode or DFmode without the extension
and the problematic truncation.

A generic test of the new option is added, as well as x86-specific
tests, both execution tests including the generic test with different
x86 options and scan-assembler tests verifying that functions that
should be inlined with different options are indeed inlined.

I think other architectures are OK for TS 18661-1 semantics already.
Considering those defining "ceil" patterns: aarch64, arm, rs6000, s390
use instructions that do not raise "inexact"; nvptx does not support
floating-point exceptions.  (This does mean the -f option in fact only
affects one architecture, but I think it should still be a -f option;
it's logically architecture-independent and is expected to be affected
by future -std options, so is similar to e.g. -fexcess-precision=,
which also does nothing on most architectures but is implied by -std
options.)

Bootstrapped with no regressions on x86_64-pc-linux-gnu.  OK to
commit?

PR target/71276
PR target/71277
gcc:
* common.opt (ffp-int-builtin-inexact): New option.
* doc/invoke.texi (-fno-fp-int-builtin-inexact): Document.
* doc/md.texi (floor@var{m}2, btrunc@var{m}2, round@var{m}2)
(ceil@var{m}2): Document dependence on this option.
* ipa-inline-transform.c (inline_call): Handle
flag_fp_int_builtin_inexact.
* ipa-inline.c (can_inline_edge_p): Likewise.
* config/i386/i386.md (rintxf2): Do not test
flag_unsafe_math_optimizations.
(rint<mode>2_frndint): New define_insn.
(rint<mode>2): Do not test flag_unsafe_math_optimizations for 387
or !flag_trapping_math for SSE.  Just use gen_rint<mode>2_frndint
for 387 instead of extending and truncating.
(frndintxf2_<rounding>): Test flag_fp_int_builtin_inexact ||
!flag_trapping_math instead of flag_unsafe_math_optimizations.
Change to frndint<mode>2_<rounding>.
(frndintxf2_<rounding>_i387): Likewise.  Change to
frndint<mode>2_<rounding>_i387.
(<rounding_insn>xf2): Likewise.
(<rounding_insn><mode>2): Test flag_fp_int_builtin_inexact ||
!flag_trapping_math instead of flag_unsafe_math_optimizations for
x87.  Test TARGET_ROUND || !flag_trapping_math ||
flag_fp_int_builtin_inexact instead of !flag_trapping_math for
SSE.  Use ROUND_NO_EXC in constant operand of
gen_sse4_1_round<mode>2.  Just use gen_frndint<mode>2_<rounding>
for 387 instead of extending and truncating.

gcc/testsuite:
* gcc.dg/torture/builtin-fp-int-inexact.c,
gcc.target/i386/387-builtin-fp-int-inexact.c,
gcc.target/i386/387-rint-inline-1.c,
gcc.target/i386/387-rint-inline-2.c,
gcc.target/i386/sse2-builtin-fp-int-inexact.c,
gcc.target/i386/sse2-rint-inline-1.c,
gcc.target/i386/sse2-rint-inline-2.c,
gcc.target/i386/sse4_1-builtin-fp-int-inexact.c,
gcc.target/i386/sse4_1-rint-inline.c: New tests.

From-SVN: r237074

8 years agoImplement x86 interrupt attribute
H.J. Lu [Fri, 3 Jun 2016 15:08:00 +0000 (15:08 +0000)]
Implement x86 interrupt attribute

The interrupt and exception handlers are called by x86 processors.  X86
hardware pushes information onto stack and calls the handler.  The
requirements are

1. Both interrupt and exception handlers must use the 'IRET' instruction,
instead of the 'RET' instruction, to return from the handlers.
2. All registers are callee-saved in interrupt and exception handlers.
3. The difference between interrupt and exception handlers is the
exception handler must pop 'ERROR_CODE' off the stack before the 'IRET'
instruction.

The design goals of interrupt and exception handlers for x86 processors
are:

1. Support both 32-bit and 64-bit modes.
2. Flexible for compilers to optimize.
3. Easy to use by programmers.

To implement interrupt and exception handlers for x86 processors, a
compiler should support:

'interrupt' attribute

Use this attribute to indicate that the specified function with
mandatory arguments is an interrupt or exception handler.  The compiler
generates function entry and exit sequences suitable for use in an
interrupt handler when this attribute is present.  The 'IRET' instruction,
instead of the 'RET' instruction, is used to return from interrupt or
exception handlers.  All registers, except for the EFLAGS register which
is restored by the 'IRET' instruction, are preserved by the compiler.
Since GCC doesn't preserve MPX, SSE, MMX nor x87 states, the GCC option,
-mgeneral-regs-only, should be used to compile interrupt and exception
handlers.

Note for compiler implementers: If the compiler generates MPX, SSE, MMX
or x87 instructions in an interrupt or exception handler, or functions
called from an interrupt or exception handler may contain MPX, SSE, MMX
or x87 instructions, the compiler must save and restore the corresponding
state.

Since the direction flag in the FLAGS register in interrupt (exception)
handlers is undetermined, cld instruction must be emitted in function
prologue if rep string instructions are used in interrupt (exception)
handler or interrupt (exception) handler isn't a leaf function.

Any interruptible-without-stack-switch code must be compiled with
-mno-red-zone since interrupt handlers can and will, because of the
hardware design, touch the red zone.

1. interrupt handler must be declared with a mandatory pointer argument:

struct interrupt_frame;

__attribute__ ((interrupt))
void
f (struct interrupt_frame *frame)
{
...
}

and user must properly define the structure the pointer pointing to.

2. exception handler:

The exception handler is very similar to the interrupt handler with
a different mandatory function signature:

typedef unsigned int uword_t __attribute__ ((mode (__word__)));

struct interrupt_frame;

__attribute__ ((interrupt))
void
f (struct interrupt_frame *frame, uword_t error_code)
{
...
}

and compiler pops the error code off stack before the 'IRET' instruction.

The exception handler should only be used for exceptions which push an
error code and all other exceptions must use the interrupt handler.
The system will crash if the wrong handler is used.

'no_caller_saved_registers' attribute

Use this attribute to indicate that the specified function has no
caller-saved registers.  That is, all registers are callee-saved.
The compiler generates proper function entry and exit sequences to
save and restore any modified registers, except for the EFLAGS register.
Since GCC doesn't preserve MPX, SSE, MMX nor x87 states, the GCC option,
-mgeneral-regs-only, should be used to compile functions with
'no_caller_saved_registers'attribute.

Note for compiler implementers: If the compiler generates MPX, SSE,
MMX or x87 instructions in a function with 'no_caller_saved_registers'
attribute or functions called from a function with
'no_caller_saved_registers' attribute may contain MPX, SSE, MMX or x87
instructions, the compiler must save and restore the corresponding state.

The user can call functions specified with 'no_caller_saved_registers'
attribute from an interrupt handler without saving and restoring all
call clobbered registers.

On x86, interrupt handlers are only called by processors which push
interrupt data onto stack at the address where the normal return address
is.  Interrupt handlers must access interrupt data via pointers so that
they can update interrupt data.

gcc/

PR target/66960
PR target/67630
PR target/67634
PR target/67841
PR target/68037
PR target/68618
PR target/68661
PR target/69575
PR target/69596
PR target/69734
* config/i386/i386-protos.h (ix86_epilogue_uses): New prototype.
* config/i386/i386.c (ix86_conditional_register_usage): Preserve
all registers, except for function return registers if there are
no caller-saved registers.
(ix86_set_func_type): New function.
(ix86_set_current_function): Call ix86_set_func_type to set
no_caller_saved_registers and func_type.  Call reinit_regs if
caller-saved registers are changed.  Don't allow MPX, SSE, MMX
nor x87 instructions in interrupt handler nor function with
no_caller_saved_registers attribute.
(ix86_function_ok_for_sibcall): Return false if there are no
caller-saved registers.
(type_natural_mode): Don't warn ABI change for MMX in interrupt
handler.
(ix86_function_arg_advance): Skip for callee in interrupt
handler.
(ix86_function_arg): Return special arguments in interrupt
handler.
(ix86_promote_function_mode): Promote pointer to word_mode only
for normal functions.
(ix86_can_use_return_insn_p): Don't use `ret' instruction in
interrupt handler.
(ix86_epilogue_uses): New function.
(ix86_hard_regno_scratch_ok): Likewise.
(ix86_save_reg): Preserve all registers in interrupt handler
after reload.  Preserve all registers, except for function
return registers, if there are no caller-saved registers after
reload.
(find_drap_reg): Always use callee-saved register if there are
no caller-saved registers.
(ix86_minimum_incoming_stack_boundary): Return MIN_STACK_BOUNDARY
for interrupt handler.
(ix86_expand_prologue): Don't allow DRAP in interrupt handler.
Emit cld instruction if stringops are used in interrupt handler
or interrupt handler isn't a leaf function.
(ix86_expand_epilogue): Generate interrupt return for interrupt
handler and pop the 'ERROR_CODE' off the stack before interrupt
return in exception handler.
(ix86_expand_call): Disallow calling interrupt handler directly.
If there are no caller-saved registers, mark all registers that
are clobbered by the call which returns as clobbered.
(ix86_handle_no_caller_saved_registers_attribute): New function.
(ix86_handle_interrupt_attribute): Likewise.
(ix86_attribute_table): Add interrupt and no_caller_saved_registers
attributes.
(TARGET_HARD_REGNO_SCRATCH_OK): Likewise.
* config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Use argument
accumulation in interrupt function if stack may be realigned to
avoid DRAP.
(EPILOGUE_USES): New.
(function_type): New enum.
(machine_function): Add func_type and no_caller_saved_registers.
* config/i386/i386.md (UNSPEC_INTERRUPT_RETURN): New.
(interrupt_return): New pattern.
* doc/extend.texi: Document x86 interrupt and
no_caller_saved_registers attributes.

gcc/testsuite/

PR target/66960
PR target/67630
PR target/67634
PR target/67841
PR target/68037
PR target/68618
PR target/68661
PR target/69575
PR target/69596
PR target/69734
* gcc.dg/guality/pr68037-1.c: New test.
* gcc.dg/guality/pr68037-2.c: Likewise.
* gcc.dg/guality/pr68037-3.c: Likewise.
* gcc.dg/torture/pr68037-1.c: Likewise.
* gcc.dg/torture/pr68037-2.c: Likewise.
* gcc.dg/torture/pr68037-3.c: Likewise.
* gcc.dg/torture/pr68661-1a.c: Likewise.
* gcc.dg/torture/pr68661-1b.c: Likewise.
* gcc.target/i386/interrupt-1.c: Likewise.
* gcc.target/i386/interrupt-2.c: Likewise.
* gcc.target/i386/interrupt-3.c: Likewise.
* gcc.target/i386/interrupt-4.c: Likewise.
* gcc.target/i386/interrupt-5.c: Likewise.
* gcc.target/i386/interrupt-6.c: Likewise.
* gcc.target/i386/interrupt-7.c: Likewise.
* gcc.target/i386/interrupt-8.c: Likewise.
* gcc.target/i386/interrupt-9.c: Likewise.
* gcc.target/i386/interrupt-10.c: Likewise.
* gcc.target/i386/interrupt-11.c: Likewise.
* gcc.target/i386/interrupt-12.c: Likewise.
* gcc.target/i386/interrupt-13.c: Likewise.
* gcc.target/i386/interrupt-14.c: Likewise.
* gcc.target/i386/interrupt-15.c: Likewise.
* gcc.target/i386/interrupt-16.c: Likewise.
* gcc.target/i386/interrupt-17.c: Likewise.
* gcc.target/i386/interrupt-18.c: Likewise.
* gcc.target/i386/interrupt-19.c: Likewise.
* gcc.target/i386/interrupt-20.c: Likewise.
* gcc.target/i386/interrupt-21.c: Likewise.
* gcc.target/i386/interrupt-22.c: Likewise.
* gcc.target/i386/interrupt-23.c: Likewise.
* gcc.target/i386/interrupt-24.c: Likewise.
* gcc.target/i386/interrupt-25.c: Likewise.
* gcc.target/i386/interrupt-26.c: Likewise.
* gcc.target/i386/interrupt-27.c: Likewise.
* gcc.target/i386/interrupt-28.c: Likewise.
* gcc.target/i386/interrupt-387-err-1.c: Likewise.
* gcc.target/i386/interrupt-387-err-2.c: Likewise.
* gcc.target/i386/interrupt-bnd-err-1.c: Likewise.
* gcc.target/i386/interrupt-bnd-err-2.c: Likewise.
* gcc.target/i386/interrupt-iamcu.c: Likewise.
* gcc.target/i386/interrupt-mmx-err-1.c: Likewise.
* gcc.target/i386/interrupt-mmx-err-2.c: Likewise.
* gcc.target/i386/interrupt-redzone-1.c: Likewise.
* gcc.target/i386/interrupt-redzone-2.c: Likewise.
* gcc.target/i386/interrupt-sibcall-1.c: Likewise.
* gcc.target/i386/interrupt-sibcall-2.c: Likewise.
* gcc.target/i386/interrupt-switch-abi.c: Likewise.

Co-Authored-By: Julia Koval <julia.koval@intel.com>
From-SVN: r237073

8 years agoConvert leading spaces to tabs
H.J. Lu [Fri, 3 Jun 2016 15:06:47 +0000 (08:06 -0700)]
Convert leading spaces to tabs

From-SVN: r237072

8 years agoConvert leading spaces to tabs
H.J. Lu [Fri, 3 Jun 2016 15:05:11 +0000 (08:05 -0700)]
Convert leading spaces to tabs

From-SVN: r237071

8 years agoc-typeck.c (c_finish_omp_clauses): Mark OpenACC reduction arguments as addressable...
Chung-Lin Tang [Fri, 3 Jun 2016 14:25:12 +0000 (14:25 +0000)]
c-typeck.c (c_finish_omp_clauses): Mark OpenACC reduction arguments as addressable when async clause exists.

2016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>

c/
* c-typeck.c (c_finish_omp_clauses): Mark OpenACC reduction
arguments as addressable when async clause exists.

cp/
* semantics.c (finish_omp_clauses): Mark OpenACC reduction
arguments as addressable when async clause exists.

fortran/
* trans-openmp.c (gfc_trans_omp_reduction_list): Add mark_addressable
bool parameter, set reduction clause DECLs as addressable when true.
(gfc_trans_omp_clauses): Pass clauses->async to
gfc_trans_omp_reduction_list, add comment describing OpenACC situation.

libgomp/
* testsuite/libgomp.oacc-fortran/reduction-8.f90: New testcase.
* testsuite/libgomp.oacc-c-c++-common/reduction-8.c: New testcase.

From-SVN: r237070

8 years agore PR tree-optimization/52171 (memcmp/strcmp/strncmp can be optimized when the result...
Bernd Schmidt [Fri, 3 Jun 2016 14:20:53 +0000 (14:20 +0000)]
re PR tree-optimization/52171 (memcmp/strcmp/strncmp can be optimized when the result is tested for [in]equality with 0)

        PR tree-optimization/52171
        * builtins.c (expand_cmpstrn_or_cmpmem): Delete, moved elsewhere.
        (expand_builtin_memcmp): New arg RESULT_EQ.  All callers changed.
        Look for constant strings.  Move some code to emit_block_cmp_hints
        and use it.
        * builtins.def (BUILT_IN_MEMCMP_EQ): New.
        * defaults.h (COMPARE_MAX_PIECES): New macro.
        * expr.c (move_by_pieces_d, store_by_pieces_d): Remove old structs.
        (move_by_pieces_1, store_by_pieces_1, store_by_pieces_2): Remvoe.
        (clear_by_pieces_1): Don't declare.  Move definition before use.
        (can_do_by_pieces): New static function.
        (can_move_by_pieces): Use it.  Return bool.
        (by_pieces_ninsns): Renamed from move_by_pieces_ninsns.  New arg
        OP.  All callers changed.  Handle COMPARE_BY_PIECES.
        (class pieces_addr); New.
        (pieces_addr::pieces_addr, pieces_addr::decide_autoinc,
        pieces_addr::adjust, pieces_addr::increment_address,
        pieces_addr::maybe_predec, pieces_addr::maybe_postinc): New member
        functions for it.
        (class op_by_pieces_d): New.
        (op_by_pieces_d::op_by_pieces_d, op_by_pieces_d::run): New member
        functions for it.
        (class move_by_pieces_d, class compare_by_pieces_d,
        class store_by_pieces_d): New subclasses of op_by_pieces_d.
        (move_by_pieces_d::prepare_mode, move_by_pieces_d::generate,
        move_by_pieces_d::finish_endp, store_by_pieces_d::prepare_mode,
        store_by_pieces_d::generate, store_by_pieces_d::finish_endp,
        compare_by_pieces_d::generate, compare_by_pieces_d::prepare_mode,
        compare_by_pieces_d::finish_mode): New member functions.
        (compare_by_pieces, emit_block_cmp_via_cmpmem): New static
        functions.
        (expand_cmpstrn_or_cmpmem): Moved here from builtins.c.
        (emit_block_cmp_hints): New function.
        (move_by_pieces, store_by_pieces, clear_by_pieces): Rewrite to just
        use the newly defined classes.
        * expr.h (by_pieces_constfn): New typedef.
        (can_store_by_pieces, store_by_pieces): Use it in arg declarations.
        (emit_block_cmp_hints, expand_cmpstrn_or_cmpmem): Declare.
        (move_by_pieces_ninsns): Don't declare.
        (can_move_by_pieces): Change return value to bool.
        * target.def (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Update docs.
        (compare_by_pieces_branch_ratio): New hook.
        * target.h (enum by_pieces_operation): Add COMPARE_BY_PIECES.
        (by_pieces_ninsns): Declare.
        * targethooks.c (default_use_by_pieces_infrastructure_p): Handle
        COMPARE_BY_PIECES.
        (default_compare_by_pieces_branch_ratio): New function.
        * targhooks.h (default_compare_by_pieces_branch_ratio): Declare.
        * doc/tm.texi.in (STORE_MAX_PIECES, COMPARE_MAX_PIECES): Document.
        * doc/tm.texi: Regenerate.
        * tree-ssa-strlen.c: Include "builtins.h".
        (handle_builtin_memcmp): New static function.
        (strlen_optimize_stmt): Call it for BUILT_IN_MEMCMP.
        * tree.c (build_common_builtin_nodes): Create __builtin_memcmp_eq.

testsuite/
        PR tree-optimization/52171
        * gcc.dg/pr52171.c: New test.
        * gcc.target/i386/pr52171.c: New test.

From-SVN: r237069

8 years agopred-1.C: New testcase
Jan Hubicka [Fri, 3 Jun 2016 13:47:15 +0000 (15:47 +0200)]
pred-1.C: New testcase

* g++.dg/tree-ssa/pred-1.C: New testcase
* gcc.dg/tree-ssa/pred-1.c: New testcase
* cp-gimplify.c (genericize_continue_stmt): Force addition of
predict stmt.

From-SVN: r237068

8 years agore PR target/70957 (testsuite/gcc.target/powerpc/vsx-elemrev-4.c fails on power7)
Bill Schmidt [Fri, 3 Jun 2016 13:14:26 +0000 (13:14 +0000)]
re PR target/70957 (testsuite/gcc.target/powerpc/vsx-elemrev-4.c fails on power7)

2016-06-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR target/70957
* gcc.target/powerpc/vsx-elemrev-2.c: Require p9vector hardware
support.
* gcc.target/powerpc/vsx-elemrev-4.c: Likewise.

From-SVN: r237066

8 years ago[3/3] No need to vectorize simple only-live stmts
Alan Hayward [Fri, 3 Jun 2016 13:04:01 +0000 (13:04 +0000)]
[3/3] No need to vectorize simple only-live stmts

2016-06-03  Alan Hayward  <alan.hayward@arm.com>

[3/3] No need to vectorize simple only-live stmts

gcc/
* tree-vect-stmts.c (vect_stmt_relevant_p): Do not vectorize non live
relevant stmts which are simple and invariant.
* tree-vect-loop.c (vectorizable_live_operation): Check relevance
instead of simple and invariant

testsuite/
* gcc.dg/vect/vect-live-slp-5.c: Remove dg check.

From-SVN: r237065

8 years ago[2/3] Vectorize inductions that are live after the loop
Alan Hayward [Fri, 3 Jun 2016 13:00:06 +0000 (13:00 +0000)]
[2/3] Vectorize inductions that are live after the loop

2016-06-03  Alan Hayward  <alan.hayward@arm.com>

[2/3] Vectorize inductions that are live after the loop

gcc/
* tree-vect-loop.c (vect_analyze_loop_operations): Allow live stmts.
(vectorizable_reduction): Check for new relevant state.
(vectorizable_live_operation): vectorize live stmts using
BIT_FIELD_REF.  Remove special case for gimple assigns stmts.
* tree-vect-stmts.c (is_simple_and_all_uses_invariant): New function.
(vect_stmt_relevant_p): Check for stmts which are only used live.
(process_use): Use of a stmt does not inherit it's live value.
(vect_mark_stmts_to_be_vectorized): Simplify relevance inheritance.
(vect_analyze_stmt): Check for new relevant state.
* tree-vectorizer.h (vect_relevant): New entry for a stmt which is used
outside the loop, but not inside it.

testsuite/
* gcc.dg/tree-ssa/pr64183.c: Ensure test does not vectorize.
* testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c: Remove xfail.
* gcc.dg/vect/vect-live-1.c: New test.
* gcc.dg/vect/vect-live-2.c: New test.
* gcc.dg/vect/vect-live-3.c: New test.
* gcc.dg/vect/vect-live-4.c: New test.
* gcc.dg/vect/vect-live-5.c: New test.
* gcc.dg/vect/vect-live-slp-1.c: New test.
* gcc.dg/vect/vect-live-slp-2.c: New test.
* gcc.dg/vect/vect-live-slp-3.c: New test.

From-SVN: r237064

8 years ago[1/3] Split vect_get_vec_def_for_operand into two
Alan Hayward [Fri, 3 Jun 2016 12:48:21 +0000 (12:48 +0000)]
[1/3] Split vect_get_vec_def_for_operand into two

2016-06-03  Alan Hayward  <alan.hayward@arm.com>

[1/3] Split vect_get_vec_def_for_operand into two

gcc/
* tree-vectorizer.h (vect_get_vec_def_for_operand_1): New
* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): New
(vect_get_vec_def_for_operand): Split out code.

From-SVN: r237063

8 years agors6000: Remove the ancient mfcr peepholes
Segher Boessenkool [Fri, 3 Jun 2016 12:33:07 +0000 (14:33 +0200)]
rs6000: Remove the ancient mfcr peepholes

These peepholes replace two mfcr;mask sequences by one mfcr;mask;mask
sequence.  On modern cpus, the original mfcr's were actually mfocrf,
but the new insn is an actual heavy-weight mfcr.  This is very bad
for performance.

The comment says there is a three cycle delay between two consecutive
mfcr insns.  This may have been true on rios, and it's true on 604,
but on 603, 750, 7400 it is just a single cycle (on 7450 it is two).

This is also a define_peephole, and we should get rid of those.

So this patch just removes the peepholes; the benefit is marginal at
best, and it so very hurts in other cases.

* config/rs6000/rs6000.md (define_peepholes for two mfcr's): Delete.

From-SVN: r237062

8 years ago2016-06-03 Alan Hayward <alan.hayward@arm.com>
Alan Hayward [Fri, 3 Jun 2016 12:12:41 +0000 (12:12 +0000)]
2016-06-03  Alan Hayward  <alan.hayward@arm.com>

gcc/
* tree-vect-stmts.c (vectorizable_call) Remove GOMP_SIMD_LANE code.

From-SVN: r237061

8 years ago[ARM][obvious] Fix typos in *thumb1_mulsi3 comment
Kyrylo Tkachov [Fri, 3 Jun 2016 08:43:28 +0000 (08:43 +0000)]
[ARM][obvious] Fix typos in *thumb1_mulsi3 comment

* config/arm/thumb1.md (*thumb1_mulsi3): Fix typos in comment.

From-SVN: r237058

8 years ago* MAINTAINERS (Write After Approval): Add myself.
Jose E. Marchesi [Fri, 3 Jun 2016 08:35:24 +0000 (10:35 +0200)]
* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r237055

8 years agore PR middle-end/71387 (ICE in emit_move_insn, at expr.c:3418 with -Og)
Jakub Jelinek [Fri, 3 Jun 2016 08:03:11 +0000 (10:03 +0200)]
re PR middle-end/71387 (ICE in emit_move_insn, at expr.c:3418 with -Og)

PR middle-end/71387
* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): If redirecting
to noreturn e->callee->decl that has void return type and void
arguments, adjust gimple_call_fntype and remove lhs even if it had
previously addressable type.

* g++.dg/opt/pr71387.C: New test.

From-SVN: r237053

8 years agore PR tree-optimization/71328 (ice in verify_jump_thread)
Jeff Law [Fri, 3 Jun 2016 05:20:16 +0000 (23:20 -0600)]
re PR tree-optimization/71328 (ice in verify_jump_thread)

PR tree-optimization/71328
* tree-ssa-threadupdate.c (duplicate_thread_path): Fix off-by-one
error when checking for a jump back onto the copied path.  */

PR tree-optimization/71328
* gcc.c-torture/compile/pr71328.c: New test.

From-SVN: r237052

8 years agore PR fortran/52393 (I/O: "READ format" statement with parenthesed default-char-expr)
Jerry DeLisle [Fri, 3 Jun 2016 01:25:31 +0000 (01:25 +0000)]
re PR fortran/52393 (I/O: "READ format" statement with parenthesed default-char-expr)

2016-06-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/52393
* gfortran.dg/fmt_read_3.f90: Fix typo.
* gfortran.dg/fmt_read_4.f90: New test.

From-SVN: r237051

8 years agoDaily bump.
GCC Administrator [Fri, 3 Jun 2016 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237050

8 years agodecl.c (xref_tag_1): Change pairs of errors to error + inform.
Paolo Carlini [Thu, 2 Jun 2016 23:10:33 +0000 (23:10 +0000)]
decl.c (xref_tag_1): Change pairs of errors to error + inform.

/cp
2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (xref_tag_1): Change pairs of errors to error + inform.
(start_enum): Likewise.
* parser.c (cp_parser_class_head): Likewise.

/testsuite
2016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/cpp0x/forw_enum10.C: Adjust for dg-message vs dg-error.
* g++.dg/cpp0x/forw_enum6.C: Likewise.
* g++.dg/cpp0x/forw_enum8.C: Likewise.
* g++.dg/cpp0x/override2.C: Likewise.
* g++.dg/parse/crash5.C: Likewise.
* g++.dg/parse/error16.C: Likewise.
* g++.dg/parse/error27.C: Likewise.
* g++.dg/template/qualttp15.C: Likewise.
* g++.dg/template/redecl4.C: Likewise.
* g++.old-deja/g++.other/crash39.C: Likewise.
* g++.old-deja/g++.other/struct1.C: Likewise.
* g++.old-deja/g++.pt/m9a.C: Likewise.
* g++.old-deja/g++.pt/memclass10.C: Likewise.

From-SVN: r237046

8 years agomicroblaze.c: fix warnings
David Malcolm [Thu, 2 Jun 2016 19:27:10 +0000 (19:27 +0000)]
microblaze.c: fix warnings

gcc/ChangeLog:
* config/microblaze/microblaze.c (get_branch_target): Add return
NULL_RTX for the non-CALL_P case.
(insert_wic_for_ilb_runout): Remove unused local "wic_addr1".
(insert_wic): Remove unused local "j".

From-SVN: r237044

8 years agore PR c++/71372 (C++ FE drops TREE_THIS_VOLATILE in cp_fold on all tcc_reference...
Jakub Jelinek [Thu, 2 Jun 2016 16:36:04 +0000 (18:36 +0200)]
re PR c++/71372 (C++ FE drops TREE_THIS_VOLATILE in cp_fold on all tcc_reference trees)

PR c++/71372
* cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
to the newly built tree.

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

From-SVN: r237041

8 years agoFix display name of PRED_FORTRAN_FAIL_IO
Martin Liska [Thu, 2 Jun 2016 16:18:05 +0000 (18:18 +0200)]
Fix display name of PRED_FORTRAN_FAIL_IO

* predict.def: Fix typo in PRED_FORTRAN_FAIL_IO display name.

From-SVN: r237040

8 years agosource_date_epoch-1.c (main): Test __DATE__ and __TIME__ strings with __builtin_strcm...
Jakub Jelinek [Thu, 2 Jun 2016 16:17:15 +0000 (18:17 +0200)]
source_date_epoch-1.c (main): Test __DATE__ and __TIME__ strings with __builtin_strcmp instead of printf and...

* gcc.dg/cpp/source_date_epoch-1.c (main): Test __DATE__ and
__TIME__ strings with __builtin_strcmp instead of printf and
dg-output.

From-SVN: r237039

8 years agoUpdate TARGET_FUNCTION_INCOMING_ARG documentation
H.J. Lu [Thu, 2 Jun 2016 13:46:20 +0000 (13:46 +0000)]
Update TARGET_FUNCTION_INCOMING_ARG documentation

On x86, interrupt handlers are only called by processors which push
interrupt data onto stack at the address where the normal return address
is.  Since interrupt handlers must access interrupt data via pointers so
that they can update interrupt data, the pointer argument is passed as
"argument pointer - word".

TARGET_FUNCTION_INCOMING_ARG defines how callee sees its argument.
Normally it returns REG, NULL, or CONST_INT.  This patch adds arbitrary
address computation based on hard register, which can be forced into a
register, to the list.

When copying an incoming argument onto stack, assign_parm_setup_stack
has:

if (argument in memory)
  copy argument in memory to stack
else
  move argument to stack

Since an arbitrary address computation may be passed as an argument, we
change it to:

if (argument in memory)
  copy argument in memory to stack
else
  {
    if (argument isn't in register)
      force argument into a register
    move argument to stack
  }

* function.c (assign_parm_setup_stack): Force source into a
register if needed.
* target.def (function_incoming_arg): Update documentation to
allow arbitrary address computation based on hard register.
* doc/tm.texi: Regenerated.

Co-Authored-By: Julia Koval <julia.koval@intel.com>
From-SVN: r237037

8 years agoFix first match heuristics
Martin Liska [Thu, 2 Jun 2016 12:51:57 +0000 (14:51 +0200)]
Fix first match heuristics

* predict.c (combine_predictions_for_bb): Fix first match in
cases where a first predictor contains more than one occurence
in list of predictors.  Take the best value in such case.
* gcc.dg/predict-9.c: New test.

From-SVN: r237036

8 years agogcc-dg.exp (cleanup-after-saved-dg-test): Add missing global set_compiler_env_var...
Jakub Jelinek [Thu, 2 Jun 2016 12:34:42 +0000 (14:34 +0200)]
gcc-dg.exp (cleanup-after-saved-dg-test): Add missing global set_compiler_env_var and global saved_compiler_env_var.

* lib/gcc-dg.exp (cleanup-after-saved-dg-test): Add missing
global set_compiler_env_var and global saved_compiler_env_var.

From-SVN: r237035

8 years ago[rtlanal] Fix rtl-optimization/71295
Kyrylo Tkachov [Thu, 2 Jun 2016 12:26:42 +0000 (12:26 +0000)]
[rtlanal] Fix rtl-optimization/71295

PR rtl-optimization/71295
* rtlanal.c (subreg_get_info): If taking a subreg at the requested
offset would go over the size of the inner mode reject it.

* gcc.c-torture/compile/pr71295.c: New test.

From-SVN: r237034

8 years agoOn behalf of Aaron Conole <aconole@redhat.com>
Aaron Conole [Thu, 2 Jun 2016 12:22:01 +0000 (12:22 +0000)]
On behalf of Aaron Conole <aconole@redhat.com>

On behalf of  Aaron Conole  <aconole@redhat.com>
* libgcov-driver-system.c (__gcov_error_file): New.
(get_gcov_error_file): New.
(gcov_error): Use and set __gcov_error_file.
(gcov_error_exit): New.
* libgcov-driver.c (gcov_exit): Call gcov_error_exit.

From-SVN: r237033

8 years agosse.md (*vec_concatv4si): Use v=v,v instead of x=x,x and v=v,m instead of x=x,m.
Jakub Jelinek [Thu, 2 Jun 2016 11:02:26 +0000 (13:02 +0200)]
sse.md (*vec_concatv4si): Use v=v,v instead of x=x,x and v=v,m instead of x=x,m.

* config/i386/sse.md (*vec_concatv4si): Use v=v,v instead of
x=x,x and v=v,m instead of x=x,m.

* gcc.target/i386/avx512vl-concatv4si-1.c: New test.

From-SVN: r237031

8 years agosse.md (*vec_concatv2si_sse4_1): Add avx512dq v=Yv,rm alternative.
Jakub Jelinek [Thu, 2 Jun 2016 11:01:31 +0000 (13:01 +0200)]
sse.md (*vec_concatv2si_sse4_1): Add avx512dq v=Yv,rm alternative.

* config/i386/sse.md (*vec_concatv2si_sse4_1): Add avx512dq v=Yv,rm
alternative.  Change x=x,x alternative to v=Yv,Yv and x=rm,C
alternative to v=rm,C.

* gcc.target/i386/avx512dq-concatv2si-1.c: New test.
* gcc.target/i386/avx512vl-concatv2si-1.c: New test.

From-SVN: r237030

8 years agosse.md (*vec_concatv2di): Add x86_avx512dq v=Yv,rm alternative.
Jakub Jelinek [Thu, 2 Jun 2016 09:43:52 +0000 (11:43 +0200)]
sse.md (*vec_concatv2di): Add x86_avx512dq v=Yv,rm alternative.

* config/i386/sse.md (*vec_concatv2di): Add x86_avx512dq v=Yv,rm
alternative.  Change x=xm,C alternative to v=vm,C, x=x,x alternative
to v=Yv,Yv and x=x,m to v=v,m.  Use maybe_evex prefix attribute
instead of vex for the last two above mentioned alternatives.

* gcc.target/i386/avx512dq-concatv2di-1.c: New test.
* gcc.target/i386/avx512vl-concatv2di-1.c: New test.
* gcc.target/i386/sse2-init-v2di-2.c: Adjust expected vec_concatv2di
alternative number.

From-SVN: r237028

8 years agoFix fallout from: [ARM] PR target/70830: Avoid POP-{reglist}^ when returning from...
Kyrylo Tkachov [Thu, 2 Jun 2016 08:54:15 +0000 (08:54 +0000)]
Fix fallout from: [ARM] PR target/70830: Avoid POP-{reglist}^ when returning from interrupt handlers

PR target/70830
* config/arm/arm.c (arm_output_multireg_pop): Guard "pop" on update.

From-SVN: r237027

8 years agors6000: Correct the "length" attribute for trunctddd2
Segher Boessenkool [Thu, 2 Jun 2016 07:19:07 +0000 (09:19 +0200)]
rs6000: Correct the "length" attribute for trunctddd2

* config/rs6000/dfp.md (trunctddd2): Correct the "length" attribute.

From-SVN: r237026

8 years agoDaily bump.
GCC Administrator [Thu, 2 Jun 2016 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r237025

8 years agoFix ChangeLog entry:
Michael Meissner [Wed, 1 Jun 2016 22:24:29 +0000 (22:24 +0000)]
Fix ChangeLog entry:

2016-05-24  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/altivec.md (VNEG iterator): New iterator for
VNEGW/VNEGD instructions.
(p9_neg<mode>2): New insns for ISA 3.0 VNEGW/VNEGD.
(neg<mode>2): Add expander for V2DImode added in ISA 2.07, and
support for ISA 3.0 VNEGW/VNEGD instructions.

From-SVN: r237020

8 years agorl78.c: fix warning
David Malcolm [Wed, 1 Jun 2016 21:38:46 +0000 (21:38 +0000)]
rl78.c: fix warning

gcc/ChangeLog:
* config/rl78/rl78.c (rl78_expand_prologue): Convert local
from int to unsigned.

From-SVN: r237017

8 years agore PR c/70688 (bogus OpenACC data clause errors involving reductions)
Cesar Philippidis [Wed, 1 Jun 2016 20:37:44 +0000 (13:37 -0700)]
re PR c/70688 (bogus OpenACC data clause errors involving reductions)

PR c/70688
* pr70688.c: New file.

From-SVN: r237011

8 years agolibtool-version: Bump soversion.
Matthias Klose [Wed, 1 Jun 2016 20:10:48 +0000 (20:10 +0000)]
libtool-version: Bump soversion.

2016-06-01  Matthias Klose  <doko@ubuntu.com>

        * libtool-version: Bump soversion.

From-SVN: r237007

8 years agore PR target/71186 (PowerPC64: Autovectorised code hits ICE with -O3 -mpower9 -mlra)
Michael Meissner [Wed, 1 Jun 2016 20:09:35 +0000 (20:09 +0000)]
re PR target/71186 (PowerPC64: Autovectorised code hits ICE with -O3 -mpower9 -mlra)

[gcc]
2016-05-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71186
* config/rs6000/vsx.md (xxspltib_<mode>_nosplit): Add alternatives
for loading up all 0's or all 1's.

[gcc/testsuite]
2016-05-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/71186
* gcc.target/powerpc/pr71186.c: New test.

Index: gcc/config/rs6000/vsx.md
===================================================================
--- gcc/config/rs6000/vsx.md (.../svn+ssh://meissner@gcc.gnu.org/svn/gcc/trunk/gcc/config/rs6000) (revision 236935)
+++ gcc/config/rs6000/vsx.md (.../gcc/config/rs6000) (working copy)
@@ -776,8 +776,8 @@ (define_insn "xxspltib_v16qi"
   [(set_attr "type" "vecperm")])

 (define_insn "xxspltib_<mode>_nosplit"
-  [(set (match_operand:VSINT_842 0 "vsx_register_operand" "=wa")
- (match_operand:VSINT_842 1 "xxspltib_constant_nosplit" "wE"))]
+  [(set (match_operand:VSINT_842 0 "vsx_register_operand" "=wa,wa")
+ (match_operand:VSINT_842 1 "xxspltib_constant_nosplit" "jwM,wE"))]
   "TARGET_P9_VECTOR"
 {
   rtx op1 = operands[1];

[gcc]
2016-05-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/vsx.md (vsx_splat_<mode>, V2DI/V2DF): Simplify
alternatives, eliminating preferred register class.  Add support
for the MTVSRDD instruction in ISA 3.0.
(vsx_splat_v4si_internal): Use splat_input_operand instead of
reg_or_indexed_operand.
(vsx_splat_v4sf_internal): Likewise.

[gcc/testsuite]
2016-05-31  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/p9-splat-4.c: New test.

From-SVN: r237006

8 years agore PR fortran/52393 (I/O: "READ format" statement with parenthesed default-char-expr)
Jerry DeLisle [Wed, 1 Jun 2016 17:06:50 +0000 (17:06 +0000)]
re PR fortran/52393 (I/O: "READ format" statement with parenthesed default-char-expr)

2016-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/52393
* io.c (match_io): For READ, try to match a default character
expression. If found, set the dt format expression to this,
otherwise go back and try control list.

PR fortran/52393
* gfortran.dg/fmt_read_3.f90: New test.

From-SVN: r237003

8 years agosourcebuild.texi (arm_acq_rel): Document new effective target.
Thomas Preud'homme [Wed, 1 Jun 2016 16:54:18 +0000 (16:54 +0000)]
sourcebuild.texi (arm_acq_rel): Document new effective target.

2016-06-01  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * doc/sourcebuild.texi (arm_acq_rel): Document new effective target.

    gcc/testsuite/
    * lib/target-supports.exp (check_effective_target_arm_acq_rel): New
    procedure.

From-SVN: r237002

8 years agoc-common.c (get_source_date_epoch): Rename to cb_get_source_date_epoch.
Eduard Sanou [Wed, 1 Jun 2016 16:42:41 +0000 (16:42 +0000)]
c-common.c (get_source_date_epoch): Rename to cb_get_source_date_epoch.

gcc/c-family/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

* c-common.c (get_source_date_epoch): Rename to
cb_get_source_date_epoch.
* c-common.c (cb_get_source_date_epoch): Use a single generic erorr
message when the parsing fails.  Use error_at instead of fatal_error.
* c-common.h (get_source_date_epoch): Rename to
cb_get_source_date_epoch.
* c-common.h (cb_get_source_date_epoch): Prototype.
* c-common.h (MAX_SOURCE_DATE_EPOCH): Define.
* c-common.h (c_omp_region_type): Remove trailing comma.
* c-lex.c (init_c_lex): Set cb->get_source_date_epoch callback.
* c-lex.c (c_lex_with_flags): Remove initialization of
pfile->source_date_epoch.

gcc/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

* doc/cppenv.texi: Note that the `%s` in `date` is a non-standard
extension.
* gcc.c (driver_handle_option): Call set_source_date_epoch_envvar.
* gcc.c (set_source_date_epoch_envvar): New function, sets
the SOURCE_DATE_EPOCH environment variable to the current time.

gcc/testsuite/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

* gcc.dg/cpp/source_date_epoch-1.c: New file, test the proper
behaviour of the macros __DATE__ and __TIME__ when SOURCE_DATE_EPOCH
env var is set.
* gcc.dg/cpp/source_date_epoch-2.c: New file, test the error output
when parsing the SOURCE_DATE_EPOCH env var, and make sure it is only
shown once.
* lib/gcc-dg.exp (dg-set-compiler-env-var): New function, set env vars
during compilation.
* lib/gcc-dg.exp (restore-compiler-env-var): New function, restore env
vars set by dg-set-compiler-env-var.

libcpp/ChangeLog:

2016-05-13  Eduard Sanou  <dhole@openmailbox.org>

* include/cpplib.h (cpp_callbacks): Add get_source_date_epoch
callback.
* include/cpplib.h (cpp_init_source_date_epoch): Remove prototype.
* init.c (cpp_init_source_date_epoch): Remove function.
* init.c (cpp_create_reader): Initialize pfile->source_date_epoch.
* internal.h (cpp_reader): Extend comment about source_date_epoch.
* macro.c (_cpp_builtin_macro_text): Use get_source_date_epoch
callback only once, read pfile->source_date_epoch on future passes.
Check that get_source_date_epoch callback is not NULL.

From-SVN: r237001

8 years agotree-vect-loop.c (vect_determine_vectorization_factor): Also compute the factor for...
Eric Botcazou [Wed, 1 Jun 2016 16:06:10 +0000 (16:06 +0000)]
tree-vect-loop.c (vect_determine_vectorization_factor): Also compute the factor for live Phi nodes.

* tree-vect-loop.c (vect_determine_vectorization_factor): Also compute
the factor for live Phi nodes.

From-SVN: r236999

8 years agoloop-dolop.c (doloop_optimize): Us likely max iteration bound.
Jan Hubicka [Wed, 1 Jun 2016 15:26:46 +0000 (17:26 +0200)]
loop-dolop.c (doloop_optimize): Us likely max iteration bound.

* loop-dolop.c (doloop_optimize): Us likely max iteration bound.
* tree-parloops.c (parallelize_loops): likewise.
* tree-ssa-loop-unswitch.c (tree_unswitch_single_loop,
tree_unswitch_outer_loop): likewise.

From-SVN: r236998

8 years agore PR fortran/71156 (PURE interface/definition inconsistency: accepts invalid, reject...
Paul Thomas [Wed, 1 Jun 2016 14:30:00 +0000 (14:30 +0000)]
re PR fortran/71156 (PURE interface/definition inconsistency: accepts invalid, rejects valid)

2016-06-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/71156
* decl.c (copy_prefix): Add checks that the module procedure
declaration prefixes are compliant with the interface. Invert
order of existing elemental and pure checks.
* resolve.c (resolve_fl_procedure): Invert order of elemental
and pure errors.

2016-06-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/71156
* gfortran.dg/submodule_14.f08: Add missing recursive prefix
to the module procedure declaration.
* gfortran.dg/submodule_16.f08: New test.

From-SVN: r236996

8 years agore PR middle-end/71371 (ICE with OpenMP taskloop and addressable iterator)
Jakub Jelinek [Wed, 1 Jun 2016 14:24:02 +0000 (16:24 +0200)]
re PR middle-end/71371 (ICE with OpenMP taskloop and addressable iterator)

PR middle-end/71371
* gimplify.c (gimplify_omp_for): Temporarily clear gimplify_omp_ctxp
around creation of the temporary.

* c-c++-common/gomp/pr71371.c: New test.

From-SVN: r236994

8 years agore PR tree-optimization/71366 (ICE on valid code at -O3 on x86_64-linux-gnu: Segmenta...
Richard Biener [Wed, 1 Jun 2016 14:05:22 +0000 (14:05 +0000)]
re PR tree-optimization/71366 (ICE on valid code at -O3 on x86_64-linux-gnu: Segmentation fault)

2016-06-01  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71366
* tree-ssa-loop-ivcanon.c (edges_to_remove): New global.
(unloop_loops): Move removing edges here ...
(try_unroll_loop_completely): ... from here.
(try_peel_loop): ... and here.
(tree_unroll_loops_completely_1): Track parent loops via
bitmap of header BBs.
(tree_unroll_loops_completely): Adjust for that.

* gcc.dg/torture/pr71366-1.c: New testcase.
* gcc.dg/torture/pr71366-2.c: Likewise.

From-SVN: r236993

8 years agoaltivec.h (vec_slv): New macro.
Kelvin Nilsen [Wed, 1 Jun 2016 14:01:10 +0000 (14:01 +0000)]
altivec.h (vec_slv): New macro.

gcc/ChangeLog:

2016-06-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/altivec.h (vec_slv): New macro.
(vec_srv): New macro.
* config/rs6000/altivec.md (UNSPEC_VSLV): New value.
(UNSPEC_VSRV): New value.
(vslv): New insn.
(vsrv): New insn.
* config/rs6000/rs6000-builtin.def (vslv): New builtin definition.
(vsrv): New builtin definition.
* config/rs6000/rs6000-c.c (P9V_BUILTIN_VSLV): Macro expansion to
define argument types for new builtin.
(P9V_BUILTIN_VSRV): Macro expansion to define argument types for
new builtin.
* doc/extend.texi: Document the new vec_vslv and vec_srv built-in
functions.

gcc/testsuite/ChangeLog:

2016-06-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/vslv-0.c: New test.
* gcc.target/powerpc/vslv-1.c: New test.
* gcc.target/powerpc/vsrv-0.c: New test.
* gcc.target/powerpc/vsrv-1.c: New test.

From-SVN: r236992

8 years agore PR target/67310 ([PATCH] gcc 4.8.4 fails to compile with -march=native on VIA...
Uros Bizjak [Wed, 1 Jun 2016 13:44:37 +0000 (15:44 +0200)]
re PR target/67310 ([PATCH] gcc 4.8.4 fails to compile with -march=native on VIA nano CPU)

PR target/67310
* config/i386/driver-i386.c (host_detect_local_cpu): Correctly
detect processor family for signature_CENTAUR_ebx.
<case PROCESSOR_I486>: Pass c3, winchip2 or winchip-c6 for
signature_CENTAUR_ebx.
<case PROCESSOR _PENTIUMPRO>: Pass c3-2 for signature_CENTAUR_ebx.
<default>: Pass x86-64 for has_longmode.

Co-Authored-By: Jocelyn Mayer <l_indien@magic.fr>
From-SVN: r236991

8 years agonvptx.c (nvptx_assemble_undefined_decl): Reject undefined weak.
Nathan Sidwell [Wed, 1 Jun 2016 13:41:19 +0000 (13:41 +0000)]
nvptx.c (nvptx_assemble_undefined_decl): Reject undefined weak.

* config/nvptx/nvptx.c (nvptx_assemble_undefined_decl): Reject
undefined weak.

testsuite/
* c-c++-common/torture/pr57945.c: Add expected PTX error.
* gcc.target/nvptx/weak.c: New.

From-SVN: r236990

8 years agore PR tree-optimization/71261 (Trunk GCC hangs on knl and broadwell targets)
Richard Biener [Wed, 1 Jun 2016 13:08:24 +0000 (13:08 +0000)]
re PR tree-optimization/71261 (Trunk GCC hangs on knl and broadwell targets)

2016-06-01  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71261
* tree-vect-patterns.c (check_bool_pattern): Gather a hash-set
of stmts successfully put in the bool pattern.  Remove
single-use restriction.
(adjust_bool_pattern_cast): Add cast at the use site via the
pattern def sequence.
(adjust_bool_pattern): Remove recursion, maintain a hash-map
of patterned defs.  Use the pattern def seqence instead of
multiple independent patterns.
(sort_after_uid): New qsort compare function.
(adjust_bool_stmts): New function to process stmts in the bool
pattern in IL order.
(vect_recog_bool_pattern): Adjust.
* tree-if-conv.c (ifcvt_split_def_stmt): Remove.
(ifcvt_walk_pattern_tree): Likewise.
(stmt_is_root_of_bool_pattern): Likewise.
(ifcvt_repair_bool_pattern): Likewise.
(tree_if_conversion): Do not call ifcvt_repair_bool_pattern.

* gcc.dg/torture/vect-bool-1.c: New testcase.

From-SVN: r236989

8 years agoparse.c (case_decl): Move ST_OMP_* to ...
Jakub Jelinek [Wed, 1 Jun 2016 12:21:38 +0000 (14:21 +0200)]
parse.c (case_decl): Move ST_OMP_* to ...

* parse.c (case_decl): Move ST_OMP_* to ...
(case_omp_decl): ... here, new macro.
(verify_st_order): For case_omp_decl, complain about
p->state >= ORDER_EXEC, but don't change p->state otherwise.

* gfortran.dg/gomp/order-1.f90: New test.
* gfortran.dg/gomp/order-2.f90: New test.

From-SVN: r236987

8 years agoloop-unroll.c (decide_unroll_constant_iterations, [...]): Use likely upper bounds.
Jan Hubicka [Wed, 1 Jun 2016 12:01:17 +0000 (14:01 +0200)]
loop-unroll.c (decide_unroll_constant_iterations, [...]): Use likely upper bounds.

* loop-unroll.c (decide_unroll_constant_iterations,
decide_unroll_runtime_iterations, decide_unroll_stupid): Use
likely upper bounds.
* loop-iv.c (find_simple_exit): Dump likely upper bounds.

* gcc.dg/unroll-6.c: Update template.
* gcc.dg/unroll-7.c: New testcase.
* gcc.dg/unroll-8.c: New testcase.

From-SVN: r236986

8 years agoRemove the unused OMP_CLAUSE_DEVICE_RESIDENT
Thomas Schwinge [Wed, 1 Jun 2016 11:55:35 +0000 (13:55 +0200)]
Remove the unused OMP_CLAUSE_DEVICE_RESIDENT

gcc/
* tree-core.h (enum omp_clause_code): Remove
OMP_CLAUSE_DEVICE_RESIDENT.  Adjust all users.

From-SVN: r236985

8 years ago[ARM] Use proper output modifier for DImode register in store exclusive patterns
Kyrylo Tkachov [Wed, 1 Jun 2016 10:44:07 +0000 (10:44 +0000)]
[ARM] Use proper output modifier for DImode register in store exclusive patterns

* config/arm/sync.md (arm_store_exclusive<mode>):
Use 'H' output modifier on operands[2] rather than creating a new
entry in out-of-bounds memory of the operands array.
(arm_store_release_exclusivedi): Likewise.

From-SVN: r236984

8 years ago[ARM] Tie operand 1 to operand 0 in AESMC pattern when fusing AES/AESMC
Kyrylo Tkachov [Wed, 1 Jun 2016 10:37:27 +0000 (10:37 +0000)]
[ARM] Tie operand 1 to operand 0 in AESMC pattern when fusing AES/AESMC

* config/arm/arm.c (arm_fusion_enabled_p): New function.
* config/arm/arm-protos.h (arm_fusion_enabled_p): Declare prototype.
* config/arm/crypto.md (crypto_<crypto_pattern>, CRYPTO_UNARY):
Add "=w,0" alternative.  Enable it when AES/AESMC fusion is enabled.

From-SVN: r236982

8 years agotree-vect-loop.c (vect_determine_vectorization_factor): Also take into account live...
Eric Botcazou [Wed, 1 Jun 2016 10:35:30 +0000 (10:35 +0000)]
tree-vect-loop.c (vect_determine_vectorization_factor): Also take into account live statements for mask producers.

* tree-vect-loop.c (vect_determine_vectorization_factor): Also take
into account live statements for mask producers.

From-SVN: r236981

8 years agore PR tree-optimization/71311 (spec2006 test case 416.gamess fails since r235817)
Richard Biener [Wed, 1 Jun 2016 10:33:35 +0000 (10:33 +0000)]
re PR tree-optimization/71311 (spec2006 test case 416.gamess fails since r235817)

2016-06-01  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71311
* match.pd (@0 < @1 && @0 < @2 -> @0 < min(@1,@2)): Add :c and
restrict to non-INTEGER_CST @0.

From-SVN: r236980

8 years agomatch.pd ((A & B) - (A & ~B) -> B - (A ^ B)): Add missing :c.
Richard Biener [Wed, 1 Jun 2016 10:31:30 +0000 (10:31 +0000)]
match.pd ((A & B) - (A & ~B) -> B - (A ^ B)): Add missing :c.

2016-06-01  Richard Biener  <rguenther@suse.de>

* match.pd ((A & B) - (A & ~B) -> B - (A ^ B)): Add missing :c.
(relational patterns): Use :c to avoid pattern duplications.

From-SVN: r236979

8 years agore PR c++/66635 (g++ ICE when compiling constexpr code with comma operator)
Paolo Carlini [Wed, 1 Jun 2016 09:48:05 +0000 (09:48 +0000)]
re PR c++/66635 (g++ ICE when compiling constexpr code with comma operator)

2016-06-01  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/66635
* g++.dg/cpp0x/constexpr-ice16.C: New.

From-SVN: r236978

8 years agogenmatch.c (comparison_code_p): New predicate.
Richard Biener [Wed, 1 Jun 2016 09:00:57 +0000 (09:00 +0000)]
genmatch.c (comparison_code_p): New predicate.

2016-06-01  Richard Biener  <rguenther@suse.de>

* genmatch.c (comparison_code_p): New predicate.
(swap_tree_comparison): New function.
(commutate): Add for_vec parameter to append new for entries.
Support commutating relational operators by swapping it alongside
operands.
(lower_commutative): Adjust.
(dt_simplify::gen): Do not pass artificial operators to gen
functions.
(decision_tree::gen): Do not add artificial operators as parameters.
(parser::parse_expr): Verify operator commutativity when :c is
applied.  Allow :C to override this.
* match.pd: Adjust patterns to use :C instead of :c where required.

From-SVN: r236977

8 years agore PR ada/71358 (GNAT.Command_Line.Getopt fails if there are no switches)
Simon Wright [Wed, 1 Jun 2016 07:43:57 +0000 (07:43 +0000)]
re PR ada/71358 (GNAT.Command_Line.Getopt fails if there are no switches)

PR ada/71358
* g-comlin.adb (Display_Section_Help): Do not dereference
Config.Switches if it's null.
(Getopt): Likewise.

From-SVN: r236975

8 years agore PR tree-optimization/71314 (test case gcc.dg/tree-ssa/ssa-thread-14.c fails starti...
Patrick Palka [Wed, 1 Jun 2016 02:37:50 +0000 (02:37 +0000)]
re PR tree-optimization/71314 (test case gcc.dg/tree-ssa/ssa-thread-14.c fails starting with its introduction in r235653)

Fix PR tree-optimization/71314

gcc/testsuite/ChangeLog:

PR tree-optimization/71314
* gcc.dg/tree-ssa/ssa-thread-14.c: Adjust target selector.  Pass
-mbranch-cost=2.

From-SVN: r236974

8 years agore PR tree-optimization/71077 (gcc -lto raises ICE)
Patrick Palka [Wed, 1 Jun 2016 02:36:27 +0000 (02:36 +0000)]
re PR tree-optimization/71077 (gcc -lto raises ICE)

Fix PR tree-optimization/71077

gcc/ChangeLog:

PR tree-optimization/71077
* tree-ssa-threadedge.c (simplify_control_stmt_condition_1): In
the combining step, use boolean_false_node and boolean_true_node
as the designated false/true return values.

gcc/testsuite/ChangeLog:

PR tree-optimization/71077
* gcc.dg/tree-ssa/pr71077.c: New test.

From-SVN: r236973

8 years agoDaily bump.
GCC Administrator [Wed, 1 Jun 2016 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r236972

8 years agopredict-lop-exit-1.C: Update template for new predictor name.
Jan Hubicka [Tue, 31 May 2016 23:33:08 +0000 (01:33 +0200)]
predict-lop-exit-1.C: Update template for new predictor name.

* g++.d/predict-lop-exit-1.C: Update template for new predictor name.
* g++.d/predict-lop-exit-2.C: Update template for new predictor name.
* g++.d/predict-lop-exit-2.C: Update template for new predictor name.

* predict.def (PRED_LOOP_EXTRA_EXIT): Define.
* predict.c (predict_iv_comparison): Also check PRED_LOOP_EXTRA_EXIT.
(predict_extra_loop_exits): Use PRED_LOOP_EXTRA_EXIT instead of
PRED_LOOP_EXIT.

From-SVN: r236968

8 years agoinvoke.texi (-frename-registers): Drop -fpeel-loops from list of flags impliying...
Jan Hubicka [Tue, 31 May 2016 23:23:40 +0000 (01:23 +0200)]
invoke.texi (-frename-registers): Drop -fpeel-loops from list of flags impliying the register renaming.

* doc/invoke.texi (-frename-registers): Drop -fpeel-loops from list
of flags impliying the register renaming.
* toplev.c (process_options): Do not imply flag_rename_registers with
loop peeling.

From-SVN: r236966

8 years ago* pt.c (instantiate_decl): Avoid recalculation.
Jason Merrill [Tue, 31 May 2016 19:49:22 +0000 (15:49 -0400)]
* pt.c (instantiate_decl): Avoid recalculation.

From-SVN: r236947

8 years agoPR c++/60095 - partial specialization of variable templates
Jason Merrill [Tue, 31 May 2016 19:49:16 +0000 (15:49 -0400)]
PR c++/60095 - partial specialization of variable templates

PR c++/69515
PR c++/69009
* pt.c (instantiate_template_1): Don't put the partial
specialization in DECL_TI_TEMPLATE.
(partial_specialization_p, impartial_args): Remove.
(regenerate_decl_from_template): Add args parm.
(instantiate_decl): Look up the partial specialization again.

From-SVN: r236946

8 years agoPR c++/71227 - specializing hidden friend
Jason Merrill [Tue, 31 May 2016 19:16:26 +0000 (15:16 -0400)]
PR c++/71227 - specializing hidden friend

* pt.c (check_explicit_specialization): Give better diagnostic about
specializing a hidden friend.

From-SVN: r236941

8 years agore PR ada/71317 (Compiling gnat for rtems fails at s-taprop.adb)
Eric Botcazou [Tue, 31 May 2016 18:59:36 +0000 (18:59 +0000)]
re PR ada/71317 (Compiling gnat for rtems fails at s-taprop.adb)

* s-osinte-kfreebsd-gnu.ads (clock_getres): Define.
(Get_Page_Size): Remove duplicate and return int.

PR ada/71317
* s-osinte-rtems.ads (clock_getres): Define.
(Get_Page_Size): Remove duplicate and return int.

From-SVN: r236938

8 years agore PR c++/71248 (crash on in-class initializer of array of pointer to member)
Paolo Carlini [Tue, 31 May 2016 17:17:29 +0000 (17:17 +0000)]
re PR c++/71248 (crash on in-class initializer of array of pointer to member)

/cp
2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71248
* decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
to obtain correct locations; avoid redundant diagnostics on
out-of-class definitions.

/testsuite
2016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71248
* g++.dg/cpp0x/pr71248.C: New.
* g++.dg/cpp0x/auto7.C: Test column numbers too.
* g++.dg/cpp0x/constexpr-static8.C: Likewise.
* g++.dg/init/new37.C: Likewise.
* g++.dg/template/static1.C: Likewise.
* g++.dg/template/static2.C: Likewise.

From-SVN: r236931

8 years agosh.h (ASM_OUTPUT_SYMBOL_REF): Remove macro and use the default implementation.
Oleg Endo [Tue, 31 May 2016 15:57:15 +0000 (15:57 +0000)]
sh.h (ASM_OUTPUT_SYMBOL_REF): Remove macro and use the default implementation.

gcc/
* config/sh/sh.h (ASM_OUTPUT_SYMBOL_REF): Remove macro and use the
default implementation.

From-SVN: r236930

8 years ago* dwarf2out.c (cur_line_info_table): Add GTY marker.
Nathan Sidwell [Tue, 31 May 2016 15:54:43 +0000 (15:54 +0000)]
* dwarf2out.c (cur_line_info_table): Add GTY marker.

From-SVN: r236929

8 years agoRemove SH5 target regs.
Oleg Endo [Tue, 31 May 2016 15:49:13 +0000 (15:49 +0000)]
Remove SH5 target regs.

gcc/
* config/sh/constraints.md (b): Remove constraint.
* config/sh/predicates.md (arith_reg_operand): Remove TARGET_REGISTER_P.
* config/sh/sh-modes.def (PDI): Remove.
* config/sh/sh.c (sh_target_reg_class,
sh_optimize_target_register_callee_saved): Remove functions.
(sh_option_override): Don't set MASK_SAVE_ALL_TARGET_REGS.
(sh_expand_epilogue): Update comment.
(sh_hard_regno_mode_ok, sh_register_move_cost, calc_live_regs,
sh_secondary_reload): Remove TARGET_REGS related code.
* config/sh/sh.h (FIRST_TARGET_REG, LAST_TARGET_REG,
TARGET_REGISTER_P): Remove macros.
(SH_DBX_REGISTER_NUMBER, REG_ALLOC_ORDER): Remove target regs.
* config/sh/sh.md (PR_MEDIA_REG, T_MEDIA_REG, FR23_REG, TR0_REG,
TR1_REG, TR2_REG): Remove constants.
* config/sh/sh.opt (SAVE_ALL_TARGET_REGS): Remove.

From-SVN: r236928

8 years agoSimplify SH DImode add, sub, neg patterns.
Oleg Endo [Tue, 31 May 2016 15:27:54 +0000 (15:27 +0000)]
Simplify SH DImode add, sub, neg patterns.

* config/sh/sh.md (adddi3, subdi3, negdi2, abs<mode>2): Remove
define_expand patterns.
(adddi3_compact): Rename to adddi3.
(subdi3_compact): Rename to subdi3.
(*negdi2): Rename to negdi2.
(*abs<mode>2): Rename to abs<mode>2.

From-SVN: r236927

8 years agoFix wrong-code issues of RX atomic operations.
Oleg Endo [Tue, 31 May 2016 15:06:25 +0000 (15:06 +0000)]
Fix wrong-code issues of RX atomic operations.

gcc/
* config/rx/rx.md (FETCHOP_NO_MINUS): New code iterator.
(atomic_<fetchop_name>_fetchsi): Extract minus operator into ...
(atomic_sub_fetchsi): ... this new pattern.
(mvtc): Add CC_REG clobber.

From-SVN: r236926

8 years agoScan %\[re\]di instead of %rdi
H.J. Lu [Tue, 31 May 2016 15:00:25 +0000 (15:00 +0000)]
Scan %\[re\]di instead of %rdi

Since x32 may use 32-bit register in address, we should scan %\[re\]di
instead of %rdi.

* gcc.target/i386/avx512vl-vbroadcast-3.c: Scan %\[re\]di
instead of %rdi.
* gcc.target/i386/avx512vl-vcvtps2ph-3.c: Likewise.

From-SVN: r236925

8 years agogimplify.c (gimplify_switch_expr): Also handle GIMPLE_TRY.
Marek Polacek [Tue, 31 May 2016 14:55:05 +0000 (14:55 +0000)]
gimplify.c (gimplify_switch_expr): Also handle GIMPLE_TRY.

* gimplify.c (gimplify_switch_expr): Also handle GIMPLE_TRY.

* c-c++-common/Wswitch-unreachable-3.c: New test.
* g++.dg/warn/Wswitch-unreachable-1.C: New test.

From-SVN: r236924

8 years ago[AArch64] Use aarch64_fusion_enabled_p to check for insn fusion capabilities
Kyrylo Tkachov [Tue, 31 May 2016 12:35:42 +0000 (12:35 +0000)]
[AArch64] Use aarch64_fusion_enabled_p to check for insn fusion capabilities

* config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Use
aarch64_fusion_enabled_p to check for fusion capabilities.

From-SVN: r236921

8 years agore PR tree-optimization/71352 (ICE at -O1 and above on x86_64-linux-gnu: in zero_one_...
Richard Biener [Tue, 31 May 2016 12:18:15 +0000 (12:18 +0000)]
re PR tree-optimization/71352 (ICE at -O1 and above on x86_64-linux-gnu: in zero_one_operation, at tree-ssa-reassoc.c:1251)

2016-05-31  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71352
* tree-ssa-reassoc.c (zero_one_operation): Handle op equal to
minus one and a negate.

* gcc.dg/tree-ssa/reassoc-45.c: New testcase.

From-SVN: r236920

8 years agobuiltins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount...
Roger Sayle [Tue, 31 May 2016 11:30:56 +0000 (11:30 +0000)]
builtins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount() and reverseBytes()...

2016-05-31  Roger Sayle  <roger@nextmovesoftware.com>

gcc/java:
* builtins.c (java_builtins): Use popcount* and bswap* builtins to
implement bitCount() and reverseBytes() methods in java.lang.Integer
and friends.
(initialize_builtins): Annotate math builtins with ECF_LEAF.  Call
define_builtin for the new popcount* and bswap* builtins.

libjava:
* testsuite/libjava.lang/BuiltinBitCount.java: New test case.
* testsuite/libjava.lang/BuiltinReverseBytes.java: Likewise.

From-SVN: r236919

8 years agoDon't needlessly clear xmemdup allocated memory.
Alan Modra [Tue, 31 May 2016 11:08:54 +0000 (20:38 +0930)]
Don't needlessly clear xmemdup allocated memory.

* xmemdup.c (xmemdup): Use xmalloc rather than xcalloc.

From-SVN: r236917

8 years ago[AArch64] Remove aarch64_simd_attr_length_move
Kyrylo Tkachov [Tue, 31 May 2016 11:04:41 +0000 (11:04 +0000)]
[AArch64] Remove aarch64_simd_attr_length_move

* config/aarch64/aarch64.c (aarch64_simd_attr_length_move): Delete.
* config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_move):
Delete prototype.
* config/aarch64/iterators.md (insn_count): Add descriptive comment.
* config/aarch64/aarch64-simd.md (*aarch64_mov<mode>, VSTRUCT modes):
Remove use of aarch64_simd_attr_length_move, set length attribute
directly.
(*aarch64_be_movoi): Likewise.
(*aarch64_be_movci): Likewise.
(*aarch64_be_movxi): Likewise.

From-SVN: r236916

8 years agoloop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops.
Jan Hubicka [Tue, 31 May 2016 10:42:59 +0000 (12:42 +0200)]
loop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops.

* loop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops.
It no longer does that.
* toplev.c (process_options): Do not enable flag_web with -fpeel-loops.

From-SVN: r236915

8 years ago[PATCH] AARCH64: Remove spurious attribute __unused__ from NEON intrinsic
Wladimir J. van der Laan [Tue, 31 May 2016 10:30:03 +0000 (10:30 +0000)]
[PATCH] AARCH64: Remove spurious attribute __unused__ from NEON intrinsic

gcc/

* config/aarch64/arm_neon.h (vdupb_laneq_s8): Remove spurious
attribute __unused__.

From-SVN: r236914

8 years agoarm-protos.h (arm_arch_thumb1): Declare.
Thomas Preud'homme [Tue, 31 May 2016 10:10:18 +0000 (10:10 +0000)]
arm-protos.h (arm_arch_thumb1): Declare.

2016-05-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm-protos.h (arm_arch_thumb1): Declare.
    * config/arm/arm.c (arm_arch_thumb1): Define.
    (arm_option_override): Initialize arm_arch_thumb1.
    * config/arm/arm.h (arm_arch_thumb1): Declare.
    (TARGET_ARM_ARCH_ISA_THUMB): Use arm_arch_thumb to determine if target
    support Thumb-1 ISA.

    gcc/testsuite/
    * gcc.target/arm/armv5_thumb_isa.c: New test.

From-SVN: r236913

8 years agoMake analyze_brprob.py executable.
Martin Liska [Tue, 31 May 2016 08:52:31 +0000 (08:52 +0000)]
Make analyze_brprob.py executable.

From-SVN: r236911

8 years agoAVX-512. Limit constraint for scalar operand in split to AVX-512VL.
Kirill Yukhin [Tue, 31 May 2016 08:05:24 +0000 (08:05 +0000)]
AVX-512. Limit constraint for scalar operand in split to AVX-512VL.

PR target/71346
gcc/
* config/i386/sse.md (define_insn_and_split "*vec_extractv4sf_0"): Use
`Yv' for scalar operand.
testsuite/
* gcc.target/i386/pr71346.c: New test.

From-SVN: r236909

8 years agoHandle 3-arg phi in copy_bb_and_scalar_dependences
Tom de Vries [Tue, 31 May 2016 07:07:26 +0000 (07:07 +0000)]
Handle 3-arg phi in copy_bb_and_scalar_dependences

2016-05-31  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/69068
* graphite-isl-ast-to-gimple.c (copy_bb_and_scalar_dependences): Handle
phis with more than two args.

* gcc.dg/graphite/pr69068.c: New test.

From-SVN: r236907

8 years agoDaily bump.
GCC Administrator [Tue, 31 May 2016 00:16:26 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r236906

8 years agoPR c++/71306 - bogus -Wplacement-new with an array element
Martin Sebor [Mon, 30 May 2016 22:56:43 +0000 (22:56 +0000)]
PR c++/71306 - bogus -Wplacement-new with an array element

gcc/cp/ChangeLog:
2016-05-27  Martin Sebor  <msebor@redhat.com>

PR c++/71306
* init.c (warn_placement_new_too_small): Handle placement new arguments
that are elements of arrays more carefully.  Remove a pointless loop.

gcc/testsuite/ChangeLog:
2016-05-27  Martin Sebor  <msebor@redhat.com>

PR c++/71306
* g++.dg/warn/Wplacement-new-size-3.C: New test.

From-SVN: r236902