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
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
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
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
* 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
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
* 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
* 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
* 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
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
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
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
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
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
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
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
* 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
* 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
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
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
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