krebbel [Fri, 19 Feb 2016 10:37:19 +0000 (10:37 +0000)]
S/390: z13 Change predicates of 128 bit add sub.
So far usage of 128 bit add/sub instruction was rejected if the second
operand was a constant because the predicate rejected this.
gcc/testsuite/ChangeLog:
* gcc.target/s390/vector/int128-1.c: New test.
gcc/ChangeLog:
* config/s390/vector.md ("<ti*>add<mode>3", "<ti*>sub<mode>3"):
Change the predicate of op2 from nonimmediate to general and let
reload fix it if necessary.
krebbel [Fri, 19 Feb 2016 10:34:12 +0000 (10:34 +0000)]
S/390: z13 fix mode in vcond expansion
For floating point vector compares the target mode is an integer mode
which accidently was used as register mode when forcing the compare
operands into regs.
gcc/ChangeLog:
* config/s390/s390.c (s390_expand_vcond): Use the compare operand
mode.
krebbel [Fri, 19 Feb 2016 10:31:05 +0000 (10:31 +0000)]
S/390: z13 inline stpcpy implementation.
A handwritten loop for stpcpy using the new z13 vector instructions
appears to be much faster than the millicoded instruction. However,
the implementation is much longer and therefore will only be enabled
when optimization for speed.
krebbel [Fri, 19 Feb 2016 10:27:12 +0000 (10:27 +0000)]
S/390: Add IBM z13 pipeline description
This patch adds proper support for the -mtune=z13 option by adding a
z13 pipeline description. As started with zEC12 we mostly make use of
the sched reorder hooks to implement a grouping strategy. However,
this time we also keep an eye at the instruction mix provided in the
out of order window to allow the hardware to exploit the different
units.
gcc/ChangeLog:
* config/s390/2827.md: Rename ooo_* insn attributes to zEC12_*.
* config/s390/2964.md: New file.
* config/s390/s390.c (s390_get_sched_attrmask): Use the right set
of insn grouping attributes depending on the CPU level.
(s390_get_unit_mask): New function.
(s390_sched_score): Remove the OOO from the scheduling macros.
Add loop to calculate a score for the instruction mix.
(s390_sched_reorder): Likewise plus improve debug output.
(s390_sched_variable_issue): Rename macros as above. Calculate
the unit distances after actually scheduling an insn. Improve
debug output.
(s390_sched_init): Clear last_scheduled_unit_distance array.
* config/s390/s390.md: Include 2964.md.
nickc [Thu, 18 Feb 2016 13:00:07 +0000 (13:00 +0000)]
PR target/62554
PR target/69610
gcc * config/arm/arm.c (arm_option_override_internal): Disable
interworking if the target does not support thumb instructions.
(arm_reload_in_hi): Handle the case where a register to register
move needs reloading because there is no simple pattern to handle
it.
(arm_reload_out_hi): Likewise.
tests * gcc.target/arm/pr62554.c: New test.
* gcc.target/arm/pr69610-1.c: New test.
* gcc.target/arm/pr69610-2.c: New test.
jakub [Wed, 17 Feb 2016 22:27:24 +0000 (22:27 +0000)]
PR c++/69850
* gimplify.c (gimplify_cond_expr): Call gimple_set_no_warning
on the cond_stmt from TREE_NO_WARNING on COND_EXPR_COND.
* gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Don't
warn on gimple_no_warning_p statements.
* init.c (build_delete): Set TREE_NO_WARNING on ifexp.
jcmvbkbc [Wed, 17 Feb 2016 20:21:48 +0000 (20:21 +0000)]
xtensa: fix libgcc build with --text-section-literals
Functions __muldf3_aux, __divdf3_aux, __mulsf3_aux and __divsf3_aux
don't start with leaf_entry, so they need explicit .literal_position,
otherwise libgcc build fails in the presence of --text-section-literals.
2016-02-17 Max Filippov <jcmvbkbc@gmail.com>
libgcc/
* config/xtensa/ieee754-df.S (__muldf3_aux, __divdf3_aux): Add
.literal_position before the function.
* config/xtensa/ieee754-sf.S (__mulsf3_aux, __divsf3_aux):
Likewise.
wilco [Wed, 17 Feb 2016 11:52:35 +0000 (11:52 +0000)]
As part of the final cleanup of aarch64_internal_mov_immediate a return was
accidentally removed. This causes the 2-instruction case to fallthrough
into the general case even when it found a match. An example immediate is
0xcccccccccccccccd which was using 2 instructions in GCC5 but now requires 4.
Adding the return fixes the regressions.
ebotcazou [Wed, 17 Feb 2016 09:21:58 +0000 (09:21 +0000)]
* exp_ch4.adb (Expand_N_Indexed_Component): Active synchronization if
the prefix denotes an entity which Has_Atomic_Components.
* gcc-interface/trans.c (node_is_atomic): Return true if the prefix
denotes an entity which Has_Atomic_Components.
timshen [Wed, 17 Feb 2016 03:33:02 +0000 (03:33 +0000)]
2016-02-16 Tim Shen <timshen@google.com>
PR libstdc++/69794
* include/bits/regex_scanner.h: Add different special character
sets for grep and egrep regex.
* include/bits/regex_scanner.tcc: Use _M_spec_char more uniformly.
* testsuite/28_regex/regression.cc: Add new testcase.
kelvin [Tue, 16 Feb 2016 23:12:19 +0000 (23:12 +0000)]
[gcc]
2016-02-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR Target/48344
* opts-global.c (handle_common_deferred_options): Introduce and
initialize two global variables to remember command-line options
specifying a stack-limiting register.
* opts.h: Add extern declarations of the two new global variables.
* emit-rtl.c (init_emit_once): Initialize the stack_limit_rtx
variable based on the values of the two new global variables.
[gcc/testsuite]
2016-02-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR Target/48344
* gcc.target/powerpc/pr48344-1.c: New test.
ebotcazou [Tue, 16 Feb 2016 18:01:04 +0000 (18:01 +0000)]
* gcc-interface/gigi.h (maybe_debug_type): New inline function.
* gcc-interface/misc.c (gnat_get_array_descr_info): Use it.
Call maybe_character_value on the array bounds. Get to the base type
of the index type and call maybe_debug_type on it.
* gcc-interface/utils.c (finish_character_type): Add special treatment
jakub [Tue, 16 Feb 2016 15:16:48 +0000 (15:16 +0000)]
PR tree-optimization/69820
* tree-vect-patterns.c (type_conversion_p): Return false if
*orig_type is unsigned single precision or boolean.
(vect_recog_dot_prod_pattern, vect_recog_widen_mult_pattern):
Formatting fix.
jakub [Tue, 16 Feb 2016 15:15:40 +0000 (15:15 +0000)]
PR rtl-optimization/69764
PR rtl-optimization/69771
* optabs.c (expand_binop): Ensure for shift optabs invalid CONST_INT
op1 is valid for GET_MODE_INNER (mode) and force it into a reg.
rguenth [Tue, 16 Feb 2016 15:00:45 +0000 (15:00 +0000)]
2016-02-16 Richard Biener <rguenther@suse.de>
PR tree-optimization/69776
* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Get alias
sets from caller.
(indirect_refs_may_alias_p): Likewise.
(refs_may_alias_p_1): Pass alias sets as from ao_ref.
* tree-ssa-sccvn.c (vn_reference_lookup): Also adjust vr alias-set
according to tbaa_p.
* tree-ssa-dom.c (lookup_avail_expr): Add tbaa_p flag.
(optimize_stmt): For redundant store discovery do not allow tbaa.
bernds [Tue, 16 Feb 2016 14:42:59 +0000 (14:42 +0000)]
Fix bswap optimization on big-endian (PR69714, 67781).
PR tree-optimization/69714
* tree-ssa-math-opts.c (find_bswap_or_nop): Revert previous change.
Return NULL if we have irrelevant high bytes on BIG_ENDIAN.
testsuite/
PR tree-optimization/69714
* gcc.dg/torture/pr69714.c: New test.
jakub [Tue, 16 Feb 2016 09:12:37 +0000 (09:12 +0000)]
PR tree-optimization/69802
* tree-ssa-reassoc.c (update_range_test): If op is
SSA_NAME_IS_DEFAULT_DEF, give up unless tem is a positive
op == 1 test of precision 1 integral op, otherwise handle
that case as op itself. Fix up formatting.
(optimize_range_tests_to_bit_test, optimize_range_tests): Fix
up formatting.
amodra [Mon, 15 Feb 2016 23:29:17 +0000 (23:29 +0000)]
[RS6000] reload_vsx_from_gprsf splitter
This is PR68973 part 2, caused by the reload_vsx_from_gprsf splitter
emitting an invalid move. The patch also fixes uses of TFmode, which
cannot now be assumed to be IBM double-double.
PR target/68973
* config/rs6000/rs6000.md (reload_vsx_from_gprsf): Rewrite splitter.
(p8_mtvsrd_df, p8_mtvsrd_sf): New.
(p8_mtvsrd_1, p8_mtvsrd_2): Delete.
(p8_mtvsrwz): New.
(p8_mtvsrwz_1, p8_mtvsrwz_2): Delete.
(p8_xxpermdi_<mode>): Take two DF inputs rather than one TF.
(p8_fmrgow_<mode>): Likewise.
(reload_vsx_from_gpr<mode>): Make clobber IF. Adjust for above
changes.
(reload_fpr_from_gpr<mode>): Similarly. Use "d" for op0 constraint.
(reload_vsx_from_gprsf): Use p8_mtvsrd_sf rather than attempting
to use movdi_internal64. Remove op0_di.
* config/rs6000/vsx.md (vsx_xscvspdpn_directmove): Make op1 SFmode.
jvdelisle [Mon, 15 Feb 2016 22:31:13 +0000 (22:31 +0000)]
2016-02-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/69651
* io/list_read.c: Entire file trailing spaces removed.
(CASE_SEPARATORS): Remove '!'.
(is_separator): Add namelist mode as condition with '!'.
(push_char): Remove un-needed memset. (push_char4): Likewise and remove
'new' pointer. (eat_separator): Remove un-needed use of notify_std.
(read_logical): If '!' bang encountered when not in namelist mode got
bad_logical to give an error. (read_integer): Likewise reject '!'.
(read_character): Remove condition testing c = '!' which is now inside
the is_separator macro. (parse_real): Reject '!' unless in namelist mode.
(read_complex): Reject '!' unless in namelist mode. (read_real): Likewise
reject '!'.
PR libgfortran/69651
* gfortran.dg/read_bang.f90: New test.
* gfortran.dg/read_bang4.f90: New test.
jason [Mon, 15 Feb 2016 21:14:05 +0000 (21:14 +0000)]
PR c++/69753
* search.c (any_dependent_bases_p): Split out...
* name-lookup.c (do_class_using_decl): ...from here.
* call.c (build_new_method_call_1): Don't complain about missing object
if there are dependent bases. Tweak error.
* tree.c (non_static_member_function_p): Remove.
* pt.c (type_dependent_expression_p): A member template of a
dependent type is dependent.
* cp-tree.h: Adjust.
krebbel [Mon, 15 Feb 2016 10:20:18 +0000 (10:20 +0000)]
S/390: Add -fsplit-stack support
libgcc/ChangeLog:
* config.host: Use t-stack and t-stack-s390 for s390*-*-linux.
* config/s390/morestack.S: New file.
* config/s390/t-stack-s390: New file.
* generic-morestack.c (__splitstack_find): Add s390-specific code.
gcc/ChangeLog:
* common/config/s390/s390-common.c (s390_supports_split_stack):
New function.
(TARGET_SUPPORTS_SPLIT_STACK): New macro.
* config/s390/s390-protos.h: Add s390_expand_split_stack_prologue.
* config/s390/s390.c (struct machine_function): New field
split_stack_varargs_pointer.
(s390_register_info): Mark r12 as clobbered if it'll be used as temp
in s390_emit_prologue.
(s390_emit_prologue): Use r12 as temp if r1 is taken by split-stack
vararg pointer.
(morestack_ref): New global.
(SPLIT_STACK_AVAILABLE): New macro.
(s390_expand_split_stack_prologue): New function.
(s390_live_on_entry): New function.
(s390_va_start): Use split-stack vararg pointer if appropriate.
(s390_asm_file_end): Emit the split-stack note sections.
(TARGET_EXTRA_LIVE_ON_ENTRY): New macro.
* config/s390/s390.md (UNSPEC_STACK_CHECK): New unspec.
(UNSPECV_SPLIT_STACK_CALL): New unspec.
(UNSPECV_SPLIT_STACK_DATA): New unspec.
(split_stack_prologue): New expand.
(split_stack_space_check): New expand.
(split_stack_data): New insn.
(split_stack_call): New expand.
(split_stack_call_*): New insn.
(split_stack_cond_call): New expand.
(split_stack_cond_call_*): New insn.
rguenth [Mon, 15 Feb 2016 08:42:38 +0000 (08:42 +0000)]
2016-02-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/69776
* tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
* tree-ssa-sccvn.c (vn_reference_lookup): Add parameter to
indicate whether we can use TBAA to disambiguate against stores.
Use alias-set zero if not.
(visit_reference_op_store): Do not use TBAA when looking up
redundant stores.
* tree-ssa-pre.c (compute_avail): Use TBAA here.
(eliminate_dom_walker::before_dom_children): But not when looking
up redundant stores.
tkoenig [Sun, 14 Feb 2016 17:08:44 +0000 (17:08 +0000)]
2016-02-14 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/60526
* decl.c (build_sym): If the name has already been defined as a
type, it has a symtree with an upper case letter at the beginning.
If such a symtree exists, issue an error and exit. Don't do
this if there is no corresponding upper case letter.
amodra [Sun, 14 Feb 2016 01:43:14 +0000 (01:43 +0000)]
Correct c-torture stkalign test
The test wrongly assumed that a local var will normally not be 64-bit
aligned, causing it to fail on many targets. So the test needs to
pass if a local var *is* normally 64-bit aligned.
amodra [Sun, 14 Feb 2016 01:37:40 +0000 (01:37 +0000)]
PRE_INC with invalid hard reg
PR target/68973
* reloads.c (find_reloads_address_1): For pre/post-inc/dec
with an invalid hard reg, reload just the reg not the entire
pre/post-inc/dec address expression.