Richard Henderson [Mon, 9 Nov 2015 09:19:59 +0000 (01:19 -0800)]
i386: Disallow address spaces with string insns
While cmps and movs allow a segment override of the ds:esi
source, the es:edi source/destination cannot be overriden.
Simplify things in the backend for now by disallowing
segments for string insns entirely.
* config/i386/i386.c (ix86_check_no_addr_space): New.
(decide_alg): Add have_as parameter.
(alg_usable_p): Likewise; disable rep algorithms if set.
(ix86_expand_set_or_movmem): Notice if either MEM has a
non-default address space.
(ix86_expand_strlen): Likewise.
* config/i386/i386.md (strmov, strset): Likewise.
(*strmovdi_rex_1): Use ix86_check_no_addr_space.
(*strmovsi_1, *strmovqi_1, *rep_movdi_rex64, *rep_movsi, *rep_movqi,
*strsetdi_rex_1, *strsetsi_1, *strsethi_1, *strsetqi_1,
*rep_stosdi_rex64, *rep_stossi, *rep_stosqi, *cmpstrnqi_nz_1,
*cmpstrnqi_1, *strlenqi_1): Likewise.
From-SVN: r230002
Richard Henderson [Mon, 9 Nov 2015 09:19:40 +0000 (01:19 -0800)]
i386: Handle address spaces in movabs patterns
* config/i386/i386.md (*movabs<mode>_1): Print the full memory rtx.
(*movabs<mode>_2): Likewise.
From-SVN: r230001
Richard Henderson [Mon, 9 Nov 2015 09:19:19 +0000 (01:19 -0800)]
Add hook for modifying debug info for address spaces
* dwarf2out.c (modified_type_die): Pass the address space number
through TARGET_ADDR_SPACE_DEBUG to produce the dwarf address class.
* target.def (TARGET_ADDR_SPACE_DEBUG): New.
* targhooks.c (default_addr_space_debug): New.
* targhooks.h (default_addr_space_debug): Declare.
* doc/tm.texi.in (TARGET_ADDR_SPACE_DEBUG): Mark it.
* doc/tm.texi: Rebuild.
From-SVN: r230000
Richard Henderson [Mon, 9 Nov 2015 09:18:59 +0000 (01:18 -0800)]
Add TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID
* gimple.c (check_loadstore): Return false when 0 is a valid address.
* fold-const.c (const_unop) [ADDR_SPACE_CONVERT_EXPR]: Do not fold
null when 0 is valid in the source address space.
* target.def (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): New.
* targhooks.c (default_addr_space_zero_address_valid): New.
* targhooks.h (default_addr_space_zero_address_valid): Declare.
* doc/tm.texi.in (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Mark it.
* doc/tm.texi: Rebuild.
From-SVN: r229999
Richard Henderson [Mon, 9 Nov 2015 09:18:35 +0000 (01:18 -0800)]
Avoid CSE of MEMs in different address spaces
* cselib.c (add_mem_for_addr): Compare address spaces when
matching memories.
(cselib_lookup_mem): Likewise.
* fold-const.c (operand_equal_p): Check address spaces of
pointer types before checking integer constants.
From-SVN: r229998
Richard Henderson [Mon, 9 Nov 2015 09:18:16 +0000 (01:18 -0800)]
re PR tree-optimization/66768 (address space gets lost on literal pointer)
PR tree-opt/66768
* tree-ssa-address.c (create_mem_ref_raw): Use a pointer of
the correct type for the base.
From-SVN: r229997
Jeff Law [Mon, 9 Nov 2015 09:02:27 +0000 (02:02 -0700)]
[PATCH] Minor refactoring in tree-ssanames.c & freelists verifier
[PATCH] Minor refactoring in tree-ssanames.c & freelists verifier
* tree-into-ssa.c (names_to_release): No longer static.
* tree-into-ssa.h (names_to_release): Declare.
* tree-ssanames.c (verify_ssaname_freelists): New debug function.
(release_free_names_and_compact_live_names): New function extracted
from pass_release_ssa_names::execute.
(pass_release_ssa_names::execute): Use it.
Co-Authored-By: Nathan Sidwell <nathan@acm.org>
From-SVN: r229995
Steven G. Kargl [Mon, 9 Nov 2015 05:50:24 +0000 (05:50 +0000)]
re PR fortran/68053 (lower bound of implied shape array restricted too much)
2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org>
PR fortran/68053
* decl.c (add_init_expr_to_sym): Try to reduce initialization expression
before testing for a constant value.
2015-11-08 Steven g. Kargl <kargl@gcc.gnu.org>
PR fortran/68053
* gfortran.dg/pr68053.f90: New test.
From-SVN: r229992
Alan Modra [Mon, 9 Nov 2015 04:54:15 +0000 (15:24 +1030)]
Configury changes for obstack optimization
Missed from last patch
* config.in: Regenerate.
From-SVN: r229991
Alan Modra [Mon, 9 Nov 2015 04:32:08 +0000 (15:02 +1030)]
Configury changes for obstack optimization
* configure.ac: Check size of size_t.
* configure: Regenerate.
From-SVN: r229990
Alan Modra [Mon, 9 Nov 2015 04:30:26 +0000 (15:00 +1030)]
Silence obstack.c -Wc++compat warning
* obstack.c (_obstack_newchunk): Silence -Wc++compat warning.
(_obstack_begin_worker): Likewise. Move assignment to h->chunk
after alloc failure check.
From-SVN: r229989
Alan Modra [Mon, 9 Nov 2015 04:28:21 +0000 (14:58 +1030)]
Modify obstack.[hc] to avoid having to include other gnulib files
Using the standard gnulib obstack source requires importing quite a
lot of other files from gnulib, and requires build changes.
include/
* obstack.h (__attribute_pure__): Expand _GL_ATTRIBUTE_PURE.
libiberty/
* obstack.c (__alignof__): Expand alignof_type from alignof.h.
(obstack_exit_failure): Don't use exitfail.h.
(_): Include libintl.h when HAVE_LIBINTL_H and nls enabled.
Provide default. Don't include gettext.h.
(_Noreturn): Define.
* obstacks.texi: Adjust node references to external libc info files.
From-SVN: r229988
Alan Modra [Mon, 9 Nov 2015 04:26:32 +0000 (14:56 +1030)]
Copy gnulib obstack files
This copies obstack.[ch] from gnulib, and updates the docs. The next
patch should be applied if someone repeats the import at a later date.
include/
* obstack.h: Import current gnulib file.
libiberty/
* obstack.c: Import current gnulib file.
* obstacks.texi: Updated doc, from glibc's manual/memory.texi.
From-SVN: r229987
Alan Modra [Mon, 9 Nov 2015 04:23:25 +0000 (14:53 +1030)]
Update libsanitizer obstack interceptors
New obstack uses sensible types, size_t instead of int for length
params. Since libsanitizer does not use prototypes from obstack.h to
call the real functions, it's necessary to update the libsanitizer
function declarations emitted by the INTERCEPTOR macro.
* sanitizer_common/sanitizer_common_interceptors.inc: Update size
params for _obstack_begin_1, _obstack_begin, _obstack_newchunk
interceptors.
* configure.ac: Substitute OBSTACK_DEFS.
* asan/Makefile.am: Add OBSTACK_DEFS to DEFS.
* tsan/Makefile.am: Likewise.
* configure: Regenerate.
* Makefile.in: Regenerate.
* asan/Makefile.in: Regenerate.
* interception/Makefile.in: Regenerate.
* libbacktrace/Makefile.in: Regenerate.
* lsan/Makefile.in: Regenerate.
* sanitizer_common/Makefile.in: Regenerate.
* tsan/Makefile.in: Regenerate.
* ubsan/Makefile.in: Regenerate.
From-SVN: r229986
Alan Modra [Mon, 9 Nov 2015 04:19:43 +0000 (14:49 +1030)]
Correct libvtv obstack use
Fixes a compile error with both old and new obstacks due to
obstack_chunk_free having the wrong signature. Also, setting chunk
size and alignment before obstack_init is pointless since they are
overwritten.
* vtv_malloc.cc (obstack_chunk_free): Correct param type.
(__vtv_malloc_init): Use obstack_specify_allocation.
From-SVN: r229985
Alan Modra [Mon, 9 Nov 2015 04:17:53 +0000 (14:47 +1030)]
New obstack_next_free is not an lvalue
New obstack.h casts obstack_next_free to (void *), resulting in it
being a non-lvalue, and warnings on pointer arithmetic.
gcc/
* gensupport.c (add_mnemonic_string): Make len param a size_t.
(gen_mnemonic_setattr): Make "size" var a size_t. Use
obstack_blank_fast to shrink obstack. Cast obstack_next_free
return value.
gcc/objc/
* objc-encoding.c (encode_aggregate_within): Cast obstack_next_free
return value.
From-SVN: r229984
Segher Boessenkool [Mon, 9 Nov 2015 03:57:19 +0000 (04:57 +0100)]
Fix bb-reorder problem with degenerate cond_jump (PR68182)
The code mistakenly thinks any cond_jump has two successors. This is
not true if both destinations are the same, as can happen with weird
patterns as in the PR.
PR rtl-optimization/68182
* gcc/bb-reorder.c (reorder_basic_blocks_simple): Treat a conditional
branch with only one successor just like unconditional branches.
From-SVN: r229983
Jeff Law [Mon, 9 Nov 2015 03:19:09 +0000 (20:19 -0700)]
[PATCH] Remove backedge handling support in tree-ssa-threadupdate.c
* tree-ssa-threadupdate.c (register_jump_thraed): Assert that a
non-FSM path has no edges marked with EDGE_DFS_BACK.
(ssa_redirect_edges): No longer call mark_loop_for_removal.
(thread_single_edge, def_split_header_continue_p): Remove.
(bb_ends_with_multiway_branch): Likewise.
(thread_through_loop_header): Remove cases of threading from
latch through the header. Simplify knowing we won't thread
the latch.
(thread_through_all_blocks): Simplify knowing that only the FSM
threader needs to handle backedges.
From-SVN: r229982
GCC Administrator [Mon, 9 Nov 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r229980
Jan Hubicka [Sun, 8 Nov 2015 19:14:29 +0000 (20:14 +0100)]
* g++.dg/lto/pr68057_0.C: Fix testcase.
From-SVN: r229968
Joost VandeVondele [Sun, 8 Nov 2015 19:12:53 +0000 (19:12 +0000)]
Move tests depending on graphite to correct subdirectory.
2015-11-08 Joost VandeVondele <vondele@gcc.gnu.org>
* gfortran.dg/PR67518.f90: move from here...
* gfortran.dg/graphite/PR67518.f90: to here.
* gfortran.dg/PR53852.f90: move from here...
* gfortran.dg/graphite/PR53852.f90: to here.
From-SVN: r229967
Eric Botcazou [Sun, 8 Nov 2015 18:33:42 +0000 (18:33 +0000)]
Merge of the scalar-storage-order branch.
From-SVN: r229965
Martin Sebor [Sun, 8 Nov 2015 17:53:51 +0000 (17:53 +0000)]
Clean up fallout on ILP32 from r229831.
gcc/
PR c++/67942
* cp/init.c (warn_placement_new_too_small): Convert integer
operand of POINTER_PLUS_EXPR to ssize_t to determine its signed
value.
c-family/
* c.opt (Wplacement-new): Add a period to the end of
a sentence.
From-SVN: r229959
Andre Vehreschild [Sun, 8 Nov 2015 17:37:42 +0000 (18:37 +0100)]
re PR fortran/68218 (ALLOCATE with size given by a module function)
gcc/fortran/ChangeLog:
2015-11-08 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/68218
* trans-array.c (gfc_array_init_size): Add gfc_evaluate_now() when
array spec in allocate is a function call.
gcc/testsuite/ChangeLog:
2015-11-08 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/68218
* gfortran.dg/allocate_with_arrayspec_1.f90: New test.
From-SVN: r229956
Steven G. Kargl [Sun, 8 Nov 2015 17:25:16 +0000 (17:25 +0000)]
re PR fortran/68224 (ICE on referencing parameter array with dimension null)
2015-11-08 Steven G. Kargl <kargl@gc.gnu.org>
PR fortran/68224
* array.c (match_array_element_spec): Check of invalid NULL().
While here, fix nearby comments.
2015-11-08 Steven G. Kargl <kargl@gc.gnu.org>
PR fortran/68224
* gfortran.dg/pr68224.f90: New test.
From-SVN: r229955
Paul Thomas [Sun, 8 Nov 2015 16:47:58 +0000 (16:47 +0000)]
re PR fortran/68196 (ICE on function result with procedure pointer component)
2015-11-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68196
* class.c (has_finalizer_component): Prevent infinite recursion
through this function if the derived type and that of its
component are the same.
* trans-types.c (gfc_get_derived_type): Do the same for proc
pointers by ignoring the explicit interface for the component.
PR fortran/66465
* check.c (same_type_check): If either of the expressions is
BT_PROCEDURE, use the typespec from the symbol, rather than the
expression.
2015-11-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68196
* gfortran.dg/proc_ptr_47.f90: New test.
PR fortran/66465
* gfortran.dg/pr66465.f90: New test.
From-SVN: r229954
Christophe Lyon [Sun, 8 Nov 2015 07:59:31 +0000 (08:59 +0100)]
[AArch64] Fix vqtb[lx][234] on big-endian
Forgot to commit the new testcases:
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqtbX.c
From-SVN: r229946
GCC Administrator [Sun, 8 Nov 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r229944
Eric Botcazou [Sat, 7 Nov 2015 22:34:20 +0000 (22:34 +0000)]
* config/sparc/sparc.opt (mfix-at697f): Add final period.
From-SVN: r229941
John David Anglin [Sat, 7 Nov 2015 22:22:33 +0000 (22:22 +0000)]
Wno-frame-address.c: Skip on hppa*-*-*.
* gcc.dg/Wno-frame-address.c: Skip on hppa*-*-*.
From-SVN: r229940
Steven G. Kargl [Sat, 7 Nov 2015 20:18:17 +0000 (20:18 +0000)]
re PR fortran/68153 (ICE for intrinsic reshape with negative dim in effective shape)
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68153
* check.c (gfc_check_reshape): Improve check for valid SHAPE argument.
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68153
* gfortran.dg/pr68153.f90: New test.
From-SVN: r229939
Steven G. Kargl [Sat, 7 Nov 2015 20:04:43 +0000 (20:04 +0000)]
re PR fortran/68151 (ICE on using select case with function of wrong type)
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68151
* match.c (match_case_selector): Check for invalid type.
2015-11-07 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68151
* gfortran.dg/pr68151.f90: New test.
From-SVN: r229938
Segher Boessenkool [Sat, 7 Nov 2015 19:44:21 +0000 (20:44 +0100)]
i386: Use the STC bb-reorder algorithm at -Os (PR67864)
For x86, STC still gives better results for optimise-for-size than
"simple" does. So use STC at -Os as well.
PR rtl-optimization/67864
* common/config/i386/i386-common.c (ix86_option_optimization_table)
<OPT_freorder_blocks_algorithm_>: Use REORDER_BLOCKS_ALGORITHM_STC
at -Os and up.
From-SVN: r229937
Trevor Saunders [Sat, 7 Nov 2015 19:36:26 +0000 (19:36 +0000)]
replace BITS_PER_UNIT with __CHAR_BIT__ in target libs
libgcc/ChangeLog:
2015-11-07 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* config/visium/lib2funcs.c (__set_trampoline_parity): Use
__CHAR_BIT__ instead of BITS_PER_UNIT.
* fixed-bit.h: Likewise.
* fp-bit.h: Likewise.
* libgcc2.c (__popcountSI2): Likewise.
(__popcountDI2): Likewise.
* libgcc2.h: Likewise.
* libgcov.h: Likewise.
libobjc/ChangeLog:
2015-11-07 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
PR libobjc/24775
* encoding.c (_darwin_rs6000_special_round_type_align): Use
__CHAR_BIT__ instead of BITS_PER_UNIT.
(objc_sizeof_type): Likewise.
(objc_layout_structure): Likewise.
(objc_layout_structure_next_member): Likewise.
(objc_layout_finish_structure): Likewise.
(objc_layout_structure_get_info): Likewise.
From-SVN: r229936
David Edelsohn [Sat, 7 Nov 2015 14:23:32 +0000 (14:23 +0000)]
atexit.c: New file.
* config/rs6000/atexit.c: New file.
* config/rs6000/t-aix-cxa (LIB2ADDEH): Build atexit.c.
* config/rs6000/libgcc-aix-cxa.ver (atexit): Add symbol to exports.
* config/rs6000/cxa_finalize.c
(catomic_compare_and_exchange_bool_acq): Negate return value.
From-SVN: r229932
Richard Sandiford [Sat, 7 Nov 2015 10:19:56 +0000 (10:19 +0000)]
Handle internal functions in is_tm_pure_call
The upcoming changes to use internal functions for things like sqrt
caused a failure in gcc.dg/tm/
20100610.c, because we were trying to get
call flags from the null gimple_call_fn of an IFN_SQRT call. We've been
making fairly heavy use of internal functions for a while now so I think
this might be latent.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* trans-mem.c (is_tm_pure_call): Use gimple_call_flags for
internal functions.
From-SVN: r229925
Richard Sandiford [Sat, 7 Nov 2015 10:18:38 +0000 (10:18 +0000)]
Move #undef DEF_BUILTIN* to builtins.def
I was confused at first why tree-core.h was undefining DEF_BUILTIN_CHKP
before defining it, then undefining it again after including builtins.def.
This is because builtins.def provides a default definition of
DEF_BUILTIN_CHKP, but leaves it up to the caller to undefine it where
necessary. Similarly to the previous internal-fn.def patch, it seems
more obvious for builtins.def to #undef things unconditionally.
One argument might have been that keeping preprocessor stuff
out of the .def files makes it easier for non-cpp parsers. In practice
though we already have #ifs and multiline #defines, so single-line #undefs
should be easy in comparison.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/ada/
* gcc-interface/utils.c: Don't undef DEF_BUILTIN.
gcc/c-family/
* c-common.c: Don't undef DEF_BUILTIN.
gcc/jit/
* jit-builtins.c: Don't undef DEF_BUILTIN.
gcc/lto/
* lto-lang.c: Don't undef DEF_BUILTIN.
gcc/
* builtins.def: #undef DEF_BUILTIN and DEF_BUILTIN_CHKP
* builtins.c, genmatch.c, tree-core.h: Don't undef them here.
From-SVN: r229924
Richard Sandiford [Sat, 7 Nov 2015 10:17:05 +0000 (10:17 +0000)]
Move #undef DEF_INTERNAL_FN to internal-fn.def
In practice the definition of DEF_INTERNAL_FN is never reused after
including internal-fn.def, so we might as well #undef it there.
This becomes more obvious with a later patch that adds other
DEF_INTERNAL_* directives, such as DEF_INTERNAL_OPTAB_FN.
If the includer doesn't care about the information carried in
these new directives, it can simply leave the macro undefined
and internals.def will provide a definition that forwards to
DEF_INTERNAL_FN. It doesn't make much sense for includers to have
to #undef macros that are defined by internals.def and it seems overly
complicated to get internals.def to undef macros only in the cases
where it provided a definition. Instead I went with the approach of
#undeffing all the DEF_INTERNAL_* macros unconditionally.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* internal-fn.def: #undef DEF_INTERNAL_FN at the end.
* internal-fn.c: Don't undef it here.
* tree-core.h: Likewise.
From-SVN: r229923
Richard Sandiford [Sat, 7 Nov 2015 10:10:44 +0000 (10:10 +0000)]
Move const char * -> int/fp folds to fold-const-call.c
This patch moves folds that deal with constant string arguments and
return a constant integer or floating-point value. For example, it
handles strcmp ("foo", "bar") but not strstr ("foobar", "bar"),
which wouldn't currently be accepted by the gimple folders.
The builtins.c folding for strlen (via c_strlen) is a bit more general
than what the fold-const-call.c code does (and more general than we need
for the gimple folders). I've therefore left it as-is, even though it
partially duplicates the new code.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.c (fold_builtin_nan): Delete.
(fold_builtin_memcmp): Remove case where both arguments are constant.
(fold_builtin_strcmp, fold_builtin_strncmp): Likewise.
(fold_builtin_strspn, fold_builtin_strcspn): Likewise.
(fold_builtin_1): Remove BUILT_IN_NAN* handling.
* fold-const-call.c: Include fold-const.h.
(host_size_t_cst_p): New function.
(build_cmp_result, fold_const_builtin_nan): Likewise.
(fold_const_call_1): New function, split out from...
(fold_const_call): ...here (for all three interfaces). Handle
constant nan, nans, strlen, strcmp, strncmp, strspn and strcspn.
From-SVN: r229922
Richard Sandiford [Sat, 7 Nov 2015 10:08:31 +0000 (10:08 +0000)]
Move constant bitop and bswap folds to fold-const-call.c
The only folds left in builtins.c were for constants, so we can remove
the builtins.c handling entirely.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.c (fold_builtin_bitop, fold_builtin_bswap): Delete.
(fold_builtin_1): Don't call them.
* fold-const-call.c: Include tm.h.
(fold_const_call_ss): New variant for integer-to-integer folds.
(fold_const_call): Call it.
From-SVN: r229921
Richard Sandiford [Sat, 7 Nov 2015 10:05:51 +0000 (10:05 +0000)]
Handle constant fp classifications in fold-const-call.c
Move the constant "is finite", "is infinite" and "is nan" queries
to fold-const-call.c.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.c (fold_builtin_classify): Move constant cases to...
* fold-const-call.c (fold_const_call_ss): ...here.
From-SVN: r229920
Richard Sandiford [Sat, 7 Nov 2015 10:01:52 +0000 (10:01 +0000)]
Move c_getstr to fold-const.c
Upcoming patches to fold-const-call.c want to use c_getstr, which is
currently defined in builtins.c. The function doesn't really do anything
related to built-ins, and I'd rather not make fold-const-call.c depend
on builtins.c and builtins.c depend on fold-const-call.c, so this patch
moves the function to fold-const.c instead.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.h (c_getstr): Move to...
* fold-const.h (c_getstr): ...here.
* builtins.c (c_getstr): Move to...
* fold-const.c (c_getstr): ...here.
From-SVN: r229919
Richard Sandiford [Sat, 7 Nov 2015 10:00:31 +0000 (10:00 +0000)]
Don't treat rint as setting errno
builtins.def says that rint sets errno, but it looks like this might
be a mistake. C99 says that rint doesn't set errno and the builtins.c
expansion code doesn't try to keep errno up to date.
Perhaps this was because earlier versions of POSIX said that
rint sets errno on overflow:
http://pubs.opengroup.org/onlinepubs/
009695399/functions/rintf.html
However, this is another instance of the observation that "rounding
functions could never overflow" (because anything using exponents
that large is already integral). The page above also says that
differences with C99 are unintentional and the ERANGE clause has
been removed from later versions of POSIX:
http://pubs.opengroup.org/onlinepubs/
9699919799/functions/rint.html
Also, the version of POSIX that lists ERANGE for rint does the same
for nearbyint:
http://pubs.opengroup.org/onlinepubs/
009695399/functions/nearbyintf.html
and we already treat nearbyint as not setting errno. This too has been
clarified in later versions of POSIX:
http://pubs.opengroup.org/onlinepubs/
9699919799/functions/nearbyint.html
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/
* builtins.def (BUILTIN_RINT, BUILTIN_RINTF, BUILTIN_RINTL): Use
ATTR_MATHFN_FPROUNDING rather than ATTR_MATHFN_FPROUNDING_ERRNO.
From-SVN: r229918
Richard Sandiford [Sat, 7 Nov 2015 09:58:32 +0000 (09:58 +0000)]
Add -fno-math-errno to gcc.dg/lto/
20110201-1_0.c
At the moment the ECF_* flags for a gimple call to a built-in
function are derived from the function decl, which in turn is
derived from the global command-line options. So if the compiler
is run with -fno-math-errno, we always assume functions don't set
errno, regardless of local optimization options. Similarly if the
compiler is run with -fmath-errno, we always assume functions set errno.
This shows up in gcc.dg/lto/
20110201-1_0.c, where we compile
the file with -O0 and use -O2 -ffast-math for a specific function.
-O2 -ffast-math is enough for us to convert cabs to sqrt as hoped,
but because of the global -fmath-errno setting, we assume that the
call to sqrt is not pure or const and create vops for it. This makes
it appear to the gimple code that a simple sqrt optab isn't enough.
Later patches move more decisions about maths functions to gimple
and think that in this case we should use:
y = sqrt (x);
if (!(x >= 0))
sqrt (x); // to set errno.
This is being tracked as PR68235. For now the patch adds
-fno-math-errno to the dg-options for this test.
Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.
gcc/testsuite/
PR tree-optimization/68235
* gcc.dg/lto/
20110201-1_0.c: Add -fno-math-errno.
From-SVN: r229917
Richard Sandiford [Sat, 7 Nov 2015 09:56:04 +0000 (09:56 +0000)]
Try to update dominance info in tree-call-cdce.c
The pass would free the dominance info after making a change, but it
should be pretty easy to keep the information up-to-date when the call
has no EH edges.
Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
gcc/
* tree-call-cdce.c (shrink_wrap_one_built_in_call): Try to update
the dominance info; free it if we can't.
(pass_call_cdce::execute): Don't free the dominance info here.
From-SVN: r229916
Jeff Law [Sat, 7 Nov 2015 06:31:14 +0000 (23:31 -0700)]
[PATCH] Remove more backedge threading support
* tree-ssa-threadedge.c (dummy_simplify): Remove.
(thread_around_empty_blocks): Remove backedge_seen_p argument.
If we thread to a backedge, then return false. Update recursive
call to eliminate backedge_seen_p argument.
(thread_through_normal_block): Remove backedge_seen_p argument.
Remove backedge_seen_p argument from calls to
thread_around_empty_blocks. Remove checks on backedge_seen_p.
If we thread to a backedge, then return 0.
(thread_across_edge): Remove bookkeeping for backedge_seen. Don't
pass it to thread_through_normal_block or thread_through_empty_blocks.
For joiner handling, if we see a backedge, do not try normal
threading.
From-SVN: r229911
Abderrazek Zaafrani [Sat, 7 Nov 2015 01:32:27 +0000 (01:32 +0000)]
add original schedule to scop
* graphite-optimize-isl.c (optimize_isl): Call isl_union_map_is_equal.
* graphite-poly.c (new_scop): Initialize original_schedule.
(free_scop): Free original_schedule.
* graphite-poly.h (struct scop): Add field original_schedule.
* graphite-sese-to-poly.c (build_scop_original_schedule): New.
(build_poly_scop): Call build_scop_original_schedule.
From-SVN: r229910
Abderrazek Zaafrani [Sat, 7 Nov 2015 01:32:20 +0000 (01:32 +0000)]
do not create unnecessary dimensions in scop scattering
* graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons): Remove.
(build_pbb_minimal_scattering_polyhedrons): New.
(build_scop_scattering): Remove.
(build_scop_minimal_scattering): New.
(build_scop_scattering): Call build_pbb_minimal_scattering_polyhedrons.
(build_poly_scop): Call build_scop_minimal_scattering.
From-SVN: r229909
Ian Lance Taylor [Sat, 7 Nov 2015 01:24:57 +0000 (01:24 +0000)]
re PR go/66138 (json decoder Decode function fails for some structure return values)
PR go/66138
reflect, encoding/json, encoding/xml: fix unexported embedded structs
Bring in three changes from the master Go repository. These changes
will be in Go 1.6, but they are appropriate for gccgo now because they
resolve a long-standing discrepancy between how gc and gccgo handle the
PkgPath field for embedded unexported struct fields. The core issue is
described at https://golang.org/cl/7247. This has been reported against
gccgo as https://gcc.gnu.org/PR66138.
The three changes being brought over are:
https://golang.org/cl/14010
reflect: adjust access to unexported embedded structs
This CL changes reflect to allow access to exported fields and
methods in unexported embedded structs for gccgo and after gc
has been adjusted to disallow access to embedded unexported structs.
Adresses #12367, #7363, #11007, and #7247.
https://golang.org/cl/14011
encoding/json: check for exported fields in embedded structs
Addresses issue #12367.
https://golang.org/cl/14012
encoding/xml: check for exported fields in embedded structs
Addresses issue #12367.
Reviewed-on: https://go-review.googlesource.com/16723
From-SVN: r229907
GCC Administrator [Sat, 7 Nov 2015 00:16:18 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r229906
Jeff Law [Fri, 6 Nov 2015 23:26:20 +0000 (16:26 -0700)]
[PATCH] Allow vrp to thread across backedges using FSM threader
* cfg-flags.def (IGNORE): New edge flag.
* tree-vrp.c (identify_jump_threads): Mark and clear edges
scheduled for removal with EDGE_IGNORE around call into
jump threader. Do no thread across edges with EDGE_IGNORE,
but do allow threading across those with EDGE_DFS_BACK.
* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Adjust to look for
realized jump threads.
* gcc.dg/tree-ssa-pr66752-3.c: Look in vrp1 dump for jump
threads rather than dom1 dump.
From-SVN: r229902
David Wohlferd [Fri, 6 Nov 2015 22:52:35 +0000 (22:52 +0000)]
inline asm and multi-alternative constraints
* doc/md.texi (multi-alternative constraints): Don't document
alternatives inherently tied to reload for the user documentation.
From-SVN: r229897
Michael Collison [Fri, 6 Nov 2015 22:38:25 +0000 (22:38 +0000)]
revert: arm.md (*arm_smin_cmp): New pattern.
2015-11-06 Michael Collison <michael.collison@linaro.org
Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
Revert:
2015-08-01 Michael Collison <michael.collison@linaro.org
Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
* config/arm/arm.md (*arm_smin_cmp): New pattern.
(*arm_umin_cmp): Likewise.
2015-11-06 Michael Collison <michael.collison@linaro.org
Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
Revert:
2015-08-01 Michael Collison <michael.collison@linaro.org
Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
* gcc.target/arm/mincmp.c: New test.
From-SVN: r229895
Dominique d'Humieres [Fri, 6 Nov 2015 21:49:18 +0000 (22:49 +0100)]
re PR fortran/54224 (Warn for unused internal procedures)
2015-11-06 Dominique d'Humieres <dominiq@lps.ens.fr>
PR fortran/54224
* gfortran.dg/warn_unused_function_2.f90: Add two new
"defined but not used" subroutines.
From-SVN: r229894
Joel Brobecker [Fri, 6 Nov 2015 21:37:49 +0000 (21:37 +0000)]
Do not use libiberty's getpagesize on Android
libiberty/ChangeLog:
* configure.ac: Set AC_CV_FUNC_GETPAGESIZE to "yes" on
Android hosts.
* configure: Regenerate.
From-SVN: r229893
Jakub Jelinek [Fri, 6 Nov 2015 21:21:16 +0000 (22:21 +0100)]
gimplify.c (gimplify_omp_ordered): Fix up diagnostics wording.
* gimplify.c (gimplify_omp_ordered): Fix up diagnostics
wording.
* omp-low.c (check_omp_nesting_restrictions): Update for the
various new OpenMP 4.5 nesting restrictions, clarified
nesting glossary, closely nested region relationship clarified
to mean explicit or implicit parallel regions (target/teams),
use %</%> or %qs where appropriate.
* gcc.dg/gomp/ordered-2.c (f1): Expect an extra error.
* g++.dg/gomp/ordered-2.C (f1): Likewise.
* gfortran.dg/goacc/parallel-kernels-regions.f95: Adjust
expected diagnostics for the addition of quotes.
* gfortran.dg/gomp/target3.f90: Likewise.
* c-c++-common/goacc/nesting-fail-1.c: Likewise.
* c-c++-common/goacc-gomp/nesting-fail-1.c: Likewise.
* c-c++-common/gomp/doacross-1.c: Likewise.
* c-c++-common/gomp/nesting-warn-1.c: Likewise.
* c-c++-common/gomp/cancel-1.c (f2): Add some new tests.
Adjust expected diagnostics wording.
* c-c++-common/gomp/clauses-4.c (foo): Likewise.
Don't expect error on ordered threads simd when in for simd.
* c-c++-common/gomp/nesting-2.c: New test.
* c-c++-common/gomp/ordered-3.c (foo): Add some new tests.
* c-c++-common/gomp/ordered-4.c: New test.
From-SVN: r229892
Mike Stump [Fri, 6 Nov 2015 21:16:30 +0000 (21:16 +0000)]
* gcc.dg/pragma-diag-5.c: Make test cases unique.
From-SVN: r229891
Aditya Kumar [Fri, 6 Nov 2015 20:43:52 +0000 (20:43 +0000)]
do not collect cold loops in scops
* graphite-scop-detection.c (loop_is_valid_scop): Call
optimize_loop_nest_for_speed_p.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229890
Aditya Kumar [Fri, 6 Nov 2015 20:43:46 +0000 (20:43 +0000)]
enable loop fusion on isl-15
* graphite-optimize-isl.c (optimize_isl): Call
isl_options_set_schedule_maximize_band_depth.
* gcc.dg/graphite/fuse-1.c: New.
* gcc.dg/graphite/fuse-2.c: New.
* gcc.dg/graphite/interchange-13.c: Remove bogus check.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229889
Aditya Kumar [Fri, 6 Nov 2015 20:43:40 +0000 (20:43 +0000)]
Do not allow irreducible loops/regions in a scop
Irreducible regions are not going to be optimized by ISL
so discard them early. Passes bootstrap and regtest.
gcc/ChangeLog:
2015-11-06 Aditya Kumar <aditya.k7@samsung.com>
* graphite-scop-detection.c (scop_detection::merge_sese): Entry and exit edges should not be a part of irreducible loop.
(scop_detection::can_represent_loop_1): Loops should not be irreducible.
(scop_detection::harmful_stmt_in_region): All the basic block should belong to reducible loops.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r229888
Christophe Lyon [Fri, 6 Nov 2015 20:34:12 +0000 (21:34 +0100)]
[AArch64] Fix vqtb[lx][234] on big-endian
2015-11-06 Christophe Lyon <christophe.lyon@linaro.org>
gcc/
* config/aarch64/aarch64-simd-builtins.def: Update builtins
tables: add tbl3v16qi, qtbl[34]*, tbx4v16qi, qtbx[34]*.
* config/aarch64/aarch64-simd.md (aarch64_tbl3v8qi): Rename to...
(aarch64_tbl3<mode>) ... this, which supports v16qi too.
(aarch64_tbx4v8qi): Rename to...
aarch64_tbx4<mode>): ... this.
(aarch64_qtbl3<mode>): New pattern.
(aarch64_qtbx3<mode>): New pattern.
(aarch64_qtbl4<mode>): New pattern.
(aarch64_qtbx4<mode>): New pattern.
* config/aarch64/arm_neon.h (vqtbl2_s8, vqtbl2_u8, vqtbl2_p8)
(vqtbl2q_s8, vqtbl2q_u8, vqtbl2q_p8, vqtbl3_s8, vqtbl3_u8)
(vqtbl3_p8, vqtbl3q_s8, vqtbl3q_u8, vqtbl3q_p8, vqtbl4_s8)
(vqtbl4_u8, vqtbl4_p8, vqtbl4q_s8, vqtbl4q_u8, vqtbl4q_p8)
(vqtbx2_s8, vqtbx2_u8, vqtbx2_p8, vqtbx2q_s8, vqtbx2q_u8)
(vqtbx2q_p8, vqtbx3_s8, vqtbx3_u8, vqtbx3_p8, vqtbx3q_s8)
(vqtbx3q_u8, vqtbx3q_p8, vqtbx4_s8, vqtbx4_u8, vqtbx4_p8)
(vqtbx4q_s8, vqtbx4q_u8, vqtbx4q_p8): Rewrite using builtin
functions.
gcc/testsuite/
* gcc.target/aarch64/advsimd-intrinsics/vqtbX.c: New test.
From-SVN: r229886
Mike Stump [Fri, 6 Nov 2015 20:16:06 +0000 (20:16 +0000)]
re PR debug/66728 (CONST_WIDE_INT causes corrupted DWARF debug info)
PR debug/66728
* dwarf2out.c (get_full_len): Return a value based upon the actual
precision needed for the value.
(add_const_value_attribute): Use a maximal wide-int for
CONST_WIDE_INTs, not VOIDmode.
(output_die): Don't ever output NULL with printf.
* rtl.h (get_precision of rtx_mode_t): Ensure we never process
BLKmode nor VOIDmode values.
From-SVN: r229885
David Malcolm [Fri, 6 Nov 2015 19:50:50 +0000 (19:50 +0000)]
Reimplement diagnostic_show_locus, introducing rich_location classes
gcc/ChangeLog:
* diagnostic-color.c (color_dict): Eliminate "caret"; add "range1"
and "range2".
(parse_gcc_colors): Update comment to describe default GCC_COLORS.
* diagnostic-core.h (warning_at_rich_loc): New declaration.
(error_at_rich_loc): New declaration.
(permerror_at_rich_loc): New declaration.
(inform_at_rich_loc): New declaration.
* diagnostic-show-locus.c (adjust_line): Delete.
(struct point_state): New struct.
(class colorizer): New class.
(class layout_point): New class.
(class layout_range): New class.
(struct line_bounds): New.
(class layout): New class.
(colorizer::colorizer): New ctor.
(colorizer::~colorizer): New dtor.
(layout::layout): New ctor.
(layout::print_source_line): New method.
(layout::print_annotation_line): New method.
(layout::get_state_at_point): New method.
(layout::get_x_bound_for_row): New method.
(diagnostic_show_locus): Reimplement in terms of class layout.
(diagnostic_print_caret_line): Delete.
* diagnostic.c (diagnostic_initialize): Replace
MAX_LOCATIONS_PER_MESSAGE with rich_location::MAX_RANGES.
(diagnostic_set_info_translated): Convert param from location_t
to rich_location *. Eliminate calls to set_location on the
message in favor of storing the rich_location ptr there.
(diagnostic_set_info): Convert param from location_t to
rich_location *.
(diagnostic_build_prefix): Break out array into...
(diagnostic_kind_color): New variable.
(diagnostic_get_color_for_kind): New function.
(diagnostic_report_diagnostic): Colorize the option_text
using the color for the severity.
(diagnostic_append_note): Update for change in signature of
diagnostic_set_info.
(diagnostic_append_note_at_rich_loc): New function.
(emit_diagnostic): Update for change in signature of
diagnostic_set_info.
(inform): Likewise.
(inform_at_rich_loc): New function.
(inform_n): Update for change in signature of diagnostic_set_info.
(warning): Likewise.
(warning_at): Likewise.
(warning_at_rich_loc): New function.
(warning_n): Update for change in signature of diagnostic_set_info.
(pedwarn): Likewise.
(permerror): Likewise.
(permerror_at_rich_loc): New function.
(error): Update for change in signature of diagnostic_set_info.
(error_n): Likewise.
(error_at): Likewise.
(error_at_rich_loc): New function.
(sorry): Update for change in signature of diagnostic_set_info.
(fatal_error): Likewise.
(internal_error): Likewise.
(internal_error_no_backtrace): Likewise.
(source_range::debug): New function.
* diagnostic.h (struct diagnostic_info): Eliminate field
"override_column". Add field "richloc".
(struct diagnostic_context): Add field "colorize_source_p".
(diagnostic_override_column): Delete.
(diagnostic_set_info): Convert param from location_t to
rich_location *.
(diagnostic_set_info_translated): Likewise.
(diagnostic_append_note_at_rich_loc): New function.
(diagnostic_num_locations): New function.
(diagnostic_expand_location): Get the location from the
rich_location.
(diagnostic_print_caret_line): Delete.
(diagnostic_get_color_for_kind): New declaration.
* genmatch.c (linemap_client_expand_location_to_spelling_point): New.
(error_cb): Update for change in signature of "error" callback.
(fatal_at): Likewise.
(warning_at): Likewise.
* input.c (linemap_client_expand_location_to_spelling_point): New.
* pretty-print.c (text_info::set_range): New method.
(text_info::get_location): New method.
* pretty-print.h (MAX_LOCATIONS_PER_MESSAGE): Eliminate this macro.
(struct text_info): Eliminate "locations" array in favor of
"m_richloc", a rich_location *.
(textinfo::set_location): Add a "caret_p" param, and reimplement
in terms of a call to set_range.
(textinfo::get_location): Eliminate inline implementation in favor of
an out-of-line reimplementation.
(textinfo::set_range): New method.
* rtl-error.c (diagnostic_for_asm): Update for change in signature
of diagnostic_set_info.
* tree-diagnostic.c (default_tree_printer): Update for new
"caret_p" param for textinfo::set_location.
* tree-pretty-print.c (percent_K_format): Likewise.
gcc/c-family/ChangeLog:
* c-common.c (c_cpp_error): Convert parameter from location_t to
rich_location *. Eliminate the "column_override" parameter and
the call to diagnostic_override_column.
Update the "done_lexing" clause to set range 0
on the rich_location, rather than overwriting a location_t.
* c-common.h (c_cpp_error): Convert parameter from location_t to
rich_location *. Eliminate the "column_override" parameter.
gcc/c/ChangeLog:
* c-decl.c (warn_defaults_to): Update for change in signature
of diagnostic_set_info.
* c-errors.c (pedwarn_c99): Likewise.
(pedwarn_c90): Likewise.
* c-objc-common.c (c_tree_printer): Update for new "caret_p" param
for textinfo::set_location.
gcc/cp/ChangeLog:
* error.c (cp_printer): Update for new "caret_p" param for
textinfo::set_location.
(pedwarn_cxx98): Update for change in signature of
diagnostic_set_info.
gcc/fortran/ChangeLog:
* cpp.c (cb_cpp_error): Convert parameter from location_t to
rich_location *. Eliminate the "column_override" parameter.
* error.c (gfc_warning): Update for change in signature of
diagnostic_set_info.
(gfc_format_decoder): Update handling of %C/%L for changes
to struct text_info.
(gfc_diagnostic_starter): Use richloc when determining whether to
print one locus or two. When handling a location that will
involve a call to diagnostic_show_locus, only attempt to print the
locus for the primary location, and don't call into
diagnostic_print_caret_line.
(gfc_warning_now_at): Update for change in signature of
diagnostic_set_info.
(gfc_warning_now): Likewise.
(gfc_error_now): Likewise.
(gfc_fatal_error): Likewise.
(gfc_error): Likewise.
(gfc_internal_error): Likewise.
gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-show-locus-bw.c: New file.
* gcc.dg/plugin/diagnostic-test-show-locus-color.c: New file.
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: New file.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above.
* lib/gcc-dg.exp: Load multiline.exp.
libcpp/ChangeLog:
* errors.c (cpp_diagnostic): Update for change in signature
of "error" callback.
(cpp_diagnostic_with_line): Likewise, calling override_column
on the rich_location.
* include/cpplib.h (struct cpp_callbacks): Within "error"
callback, convert param from source_location to rich_location *,
and drop column_override param.
* include/line-map.h (struct source_range): New struct.
(struct location_range): New struct.
(class rich_location): New class.
(linemap_client_expand_location_to_spelling_point): New declaration.
* line-map.c (rich_location::rich_location): New ctors.
(rich_location::lazily_expand_location): New method.
(rich_location::override_column): New method.
(rich_location::add_range): New methods.
(rich_location::set_range): New method.
From-SVN: r229884
Kai Tietz [Fri, 6 Nov 2015 19:43:33 +0000 (19:43 +0000)]
* testsuite/26_numerics/complex/requirements/constexpr.cc
* testsuite/26_numerics/complex/requirements/constexpr_functions.cc:
Use constexpr where needed.
From-SVN: r229883
Ian Lance Taylor [Fri, 6 Nov 2015 19:15:45 +0000 (19:15 +0000)]
libgo: Solaris portability fixes.
Only build net/hook_cloexec.go on GNU/Linux and FreeBSD, because those
are the only systems with accept4.
Add syscall/libcall_bsd.go to define sendfile for *BSD and Solaris.
Revert tcpsockopt_solaris.go back to the earlier version, so that it
works on Solaris 10.
Always pass the address of a Pid_t value to TIOCGPGRP and TIOCSPGRP.
Include <unistd.h> in runtime/go-varargs.c.
Reviewed-on: https://go-review.googlesource.com/16719
From-SVN: r229880
Ramana Radhakrishnan [Fri, 6 Nov 2015 19:00:59 +0000 (19:00 +0000)]
[Patch AArch64] Switch constant pools to separate rodata sections.
Properly apply ..
2015-11-06 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Properly apply.
2015-11-05 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/aarch64/aarch64.c
(aarch64_can_use_per_function_literal_pools_p): New.
(aarch64_use_blocks_for_constant_p): Adjust declaration
and use aarch64_can_use_function_literal_pools_p.
(aarch64_select_rtx_section): Update.
From-SVN: r229878
David Malcolm [Fri, 6 Nov 2015 18:44:05 +0000 (18:44 +0000)]
libstdc++v3: Explicitly disable carets and colorization within testsuite
libstdc++-v3/ChangeLog:
* testsuite/lib/libstdc++.exp (v3_target_compile): Add
-fno-diagnostics-show-caret -fdiagnostics-color=never to
option's additional_flags.
From-SVN: r229876
Ramana Radhakrishnan [Fri, 6 Nov 2015 18:43:15 +0000 (18:43 +0000)]
[Patch ARM] Unified assembler in ARM state.
gcc/ChangeLog:
2015-11-06 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/arm-ldmstm.ml: Rewrite to generate unified asm templates.
* config/arm/arm.c (arm_asm_trampoline_template): Make unified asm safe.
(arm_output_multireg_pop): Likewise.
(output_move_double): Likewise.
(output_move_quad): Likewise.
(output_return_instruction): Likewise.
(arm_print_operand): Remove support for %( and %. print modifiers.
(arm_output_shift): Make unified asm.
(arm_declare_function_name): Likewise.
* config/arm/arm.h (TARGET_UNIFIED_ASM): Delete.
(ASM_APP_OFF): Adjust.
(ASM_OUTPUT_REG_PUSH): Undo special casing for TARGET_ARM.
(ASM_OUTPUT_REG_POP): Likewise.
* config/arm/arm.md: Adjust uses of %., %(, %)
* config/arm/sync.md: Likewise.
* config/arm/thumb2.md: Likewise.
* config/arm/ldmstm.md: Regenerate.
* config/arm/arm.opt (masm-unified-syntax): Do not special case Thumb.
* doc/invoke.texi (masm-unified-syntax): Update documentation.
gcc/testsuite/ChangeLog:
2015-11-06 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* gcc.target/arm/combine-movs.c:
* gcc.target/arm/interrupt-1.c:
* gcc.target/arm/interrupt-2.c:
* gcc.target/arm/unaligned-memcpy-4.c:
From-SVN: r229875
David Malcolm [Fri, 6 Nov 2015 18:40:56 +0000 (18:40 +0000)]
Add stats on adhoc table to dump_line_table_statistics
gcc/ChangeLog:
* input.c (dump_line_table_statistics): Dump stats on adhoc table.
libcpp/ChangeLog:
* include/line-map.h (struct linemap_stats): Add fields
"adhoc_table_size" and "adhoc_table_entries_used".
* line-map.c (linemap_get_statistics): Populate above fields.
From-SVN: r229873
Jan Hubicka [Fri, 6 Nov 2015 17:24:28 +0000 (18:24 +0100)]
tree-core.h (size_type_kind): Remove OEP_CONSTANT_ADDRESS_OF and add OEP_MATCH_SIDE_EFFECTS.
* tree-core.h (size_type_kind): Remove OEP_CONSTANT_ADDRESS_OF and
add OEP_MATCH_SIDE_EFFECTS.
* fold-const.c (operand_equal_p): Update documentation; handle
OEP_MATCH_SIDE_EFFECTS.
* tree-ssa-tail-merge.c (gimple_operand_equal_value_p): Use
OEP_MATCH_SIDE_EFFECTS.
From-SVN: r229867
Benedikt Huber [Fri, 6 Nov 2015 17:10:17 +0000 (17:10 +0000)]
aarch64-builtins.c: Builtins for rsqrt and rsqrtf.
2015-11-06 Benedikt Huber <benedikt.huber@theobroma-systems.com>
Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
* config/aarch64/aarch64-builtins.c: Builtins for rsqrt and rsqrtf.
* config/aarch64/aarch64-protos.h: Declare.
* config/aarch64/aarch64-simd.md: Matching expressions for frsqrte and
frsqrts.
* config/aarch64/aarch64-tuning-flags.def: Added recip_sqrt.
* config/aarch64/aarch64.c: New functions. Emit rsqrt estimation code when
applicable.
* config/aarch64/aarch64.md: Added enum entries.
* config/aarch64/aarch64.opt: Added option -mlow-precision-recip-sqrt.
* testsuite/gcc.target/aarch64/rsqrt_asm_check_common.h: Common macros for
assembly checks.
* testsuite/gcc.target/aarch64/rsqrt_asm_check_negative_1.c: Make sure
frsqrts and frsqrte are not emitted.
* testsuite/gcc.target/aarch64/rsqrt_asm_check_1.c: Make sure frsqrts and
frsqrte are emitted.
* testsuite/gcc.target/aarch64/rsqrt_1.c: Functional tests for rsqrt.
Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Co-Authored-By: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
From-SVN: r229866
Thomas Schwinge [Fri, 6 Nov 2015 16:44:35 +0000 (17:44 +0100)]
XFAIL testcases regressed after r229814, "Merge from gomp-4_5-branch to trunk"
gcc/testsuite/
* gfortran.dg/goacc/combined_loop.f90: XFAIL.
From-SVN: r229864
Jason Merrill [Fri, 6 Nov 2015 16:21:29 +0000 (11:21 -0500)]
Support non-type constrained-type-specifiers.
* parser.c (check_type_concept): Remove.
(cp_parser_maybe_constrained_type_specifier): Don't call it.
(synthesize_implicit_template_parm): Handle non-type and template
template parameters. Also compare extra args. Return the decl.
(cp_parser_template_argument): Handle constrained-type-specifiers for
non-type template parameters.
(finish_constrained_template_template_parm): Split out from
cp_parser_constrained_template_template_parm.
(cp_parser_nonclass_name): Move some logic into
cp_parser_maybe_concept_name.
(cp_parser_init_declarator): Fix error recovery.
(get_concept_from_constraint): Remove.
(cp_parser_simple_type_specifier): Adjust for
synthesize_implicit_template_parm returning the decl.
* constraint.cc (placeholder_extract_concept_and_args)
(equivalent_placeholder_constraints): Also handle TYPE_DECL
constrained parms.
From-SVN: r229860
Jan Hubicka [Fri, 6 Nov 2015 16:04:38 +0000 (17:04 +0100)]
re PR ipa/68057 (450.soplex in SPEC CPU 2006 failed to build)
PR ipa/68057
PR ipa/68220
* ipa-polymorphic-call.c
(ipa_polymorphic_call_context::restrict_to_inner_type): Fix ordering
issue when offset is out of range.
(contains_type_p): Fix out of range check, clear dynamic flag.
* g++.dg/lto/pr68057_0.C: New testcase.
* g++.dg/lto/pr68057_1.C: New testcase.
* g++.dg/torture/pr68220.C: New testcase.
From-SVN: r229859
Christophe Lyon [Fri, 6 Nov 2015 15:56:48 +0000 (15:56 +0000)]
vtbX.c: Fix typos in comment.
2015-11-06 Christophe Lyon <christophe.lyon@linaro.org>
gcc/testsuite/
* gcc.target/aarch64/advsimd-intrinsics/vtbX.c: Fix typos
in comment.
From-SVN: r229858
Martin Sebor [Fri, 6 Nov 2015 15:42:41 +0000 (08:42 -0700)]
Correct entry for PR c++/67942.
From-SVN: r229857
Jason Merrill [Fri, 6 Nov 2015 15:33:24 +0000 (10:33 -0500)]
pt.c (push_inline_template_parms_recursive): Don't recreate the CONST_DECL.
* pt.c (push_inline_template_parms_recursive): Don't recreate the
CONST_DECL.
From-SVN: r229856
Arnout Vandecappelle [Fri, 6 Nov 2015 15:31:52 +0000 (16:31 +0100)]
config.gcc (e6500): Fix cpu_is_64bit typo.
2015-11-06 Arnout Vandecappelle <arnout@mind.be>
* config.gcc (e6500): Fix cpu_is_64bit typo.
From-SVN: r229855
Alan Lawrence [Fri, 6 Nov 2015 13:48:32 +0000 (13:48 +0000)]
tree-sra.c: Fix completely_scalarize for negative indices.
* tree-sra.c (completely_scalarize): Properly handle negative array
indices using offset_int.
From-SVN: r229852
Richard Biener [Fri, 6 Nov 2015 13:47:17 +0000 (13:47 +0000)]
alloc-pool.h (object_allocator::allocate): Default-initialize object.
2015-11-06 Richard Biener <rguenther@suse.de>
* alloc-pool.h (object_allocator::allocate): Default-initialize
object.
From-SVN: r229851
Richard Biener [Fri, 6 Nov 2015 13:45:54 +0000 (13:45 +0000)]
tree-ssa-sccvn.c (class sccvn_dom_walker): Add destructor.
2015-11-06 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (class sccvn_dom_walker): Add destructor.
* lra.c (init_reg_info): Truncate copy_vec instead of
re-allocating a new one and leaking the old.
* ipa-inline-analysis.c (estimate_function_body_sizes): Free
bb_infos vec.
* sched-deps.c (sched_deps_finish): Free the dn/dl pools.
* postreload-gcse.c (free_mem): Free modify_mem_list and
canon_modify_mem_list.
From-SVN: r229850
Kyrylo Tkachov [Fri, 6 Nov 2015 13:36:17 +0000 (13:36 +0000)]
[cp][committed] Fix bootstrap on arm due to print format warning
* init.c (warn_placement_new_too_small): Use %wu format
rather than %lu when printing bytes_avail.
From-SVN: r229849
Ilya Enkovich [Fri, 6 Nov 2015 13:31:51 +0000 (13:31 +0000)]
re PR tree-optimization/68145 (ICE: in vectorizable_store, at tree-vect-stmts.c:5684)
gcc/
PR tree-optimization/68145
* tree-vect-stmts.c (vectorizable_operation): Fix
determination for booleans.
gcc/testsuite/
PR tree-optimization/68145
* g++.dg/vect/pr68145.cc: New test.
From-SVN: r229848
Tom de Vries [Fri, 6 Nov 2015 13:21:51 +0000 (13:21 +0000)]
Fix transform_to_exit_first_loop_alt with -g
2015-11-06 Tom de Vries <tom@codesourcery.com>
* tree-cfg.c (gimple_split_block_before_cond_jump): Split before
cond_jump, instead of split after last nondebug insn before cond_jump.
* tree-parloops.c (transform_to_exit_first_loop_alt): Verify ssa before
returning.
From-SVN: r229847
Kyrylo Tkachov [Fri, 6 Nov 2015 12:04:15 +0000 (12:04 +0000)]
[ARM/AArch64] PR 68088: Fix RTL checking ICE due to subregs inside accumulator forwarding check
PR target/68088
* config/arm/aarch-common.c (aarch_accumulator_forwarding): Strip
subregs from accumulator and make sure it's a register.
* gcc.dg/pr68088_1.c: New test.
From-SVN: r229845
Simon Dardis [Fri, 6 Nov 2015 11:59:20 +0000 (11:59 +0000)]
Update loongson vector reductions.
2015-11-06 Simon Dardis <simon.dardis@imgtec.com>
* config/mips/loongson.md (vec_loongson_extract_lo_<mode>): New, extract
low part to scalar.
(reduc_uplus_<mode>): Remove.
(reduc_plus_scal_<mode>): Rename from reduc_splus_<mode>, Use vec
loongson_extract_lo_<mode>.
(reduc_smax_scal_<mode>, reduc_smin_scal_<mode>): Rename from
reduc_smax_<mode>, reduc_smax_<mode>, use vec
loongson_extract_lo_<mode>.
(reduc_umax_scal_<mode>, reduc_umin_scal_<mode>): Rename.
From-SVN: r229844
Richard Biener [Fri, 6 Nov 2015 11:15:40 +0000 (11:15 +0000)]
tree-vectorizer.h (struct _bb_vec_info): Add region_begin/end members.
2015-11-06 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (struct _bb_vec_info): Add region_begin/end
members.
(vect_stmt_in_region_p): Declare.
* tree-vect-slp.c (new_bb_vec_info): Work on a region.
(destroy_bb_vec_info): Likewise.
(vect_bb_slp_scalar_cost): Use vect_stmt_in_region_p.
(vect_get_and_check_slp_defs): Likewise.
(vect_slp_analyze_bb_1): Refactor to make it work on sub-BBs.
(vect_slp_bb): Likewise.
* tree-vect-patterns.c (vect_same_loop_or_bb_p): Implement
in terms of vect_stmt_in_region_p.
(vect_pattern_recog): Iterate over the BB region.
* tree-vect-stmts.c (vect_is_simple_use): Use vect_stmt_in_region_p.
* tree-vectorizer.c (vect_stmt_in_region_p): New function.
(pass_slp_vectorize::execute): Initialize all stmt UIDs to -1.
* config/i386/i386.c: Include gimple-iterator.h.
* config/aarch64/aarch64.c: Likewise.
* gcc.dg/vect/bb-slp-38.c: New testcase.
From-SVN: r229842
Thomas Schwinge [Fri, 6 Nov 2015 11:11:34 +0000 (12:11 +0100)]
XFAIL testcases regressed after r229814, "Merge from gomp-4_5-branch to trunk"
gcc/testsuite/
* gfortran.dg/goacc/private-3.f95: XFAIL.
libgomp/
* testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c: XFAIL.
* testsuite/libgomp.oacc-c-c++-common/loop-red-w-2.c: Likewise.
From-SVN: r229841
Alexandre Oliva [Fri, 6 Nov 2015 10:34:13 +0000 (10:34 +0000)]
[PR67753] fix copy of PARALLEL entry_parm to CONCAT target_reg
In assign_parms_setup_block, the copy of args in PARALLELs from
entry_parm to stack_parm is deferred to the parm conversion insn seq,
but the copy from stack_parm to target_reg was inserted in the normal
copy seq, that is executed before the conversion insn seq. Oops.
We could do away with the need for an actual stack_parm in general,
which would have avoided the need for emitting the copy to target_reg
in the conversion seq, but at least on pa, due to the need for stack
to copy between SI and SF modes, it seems like using the reserved
stack slot is beneficial, so I put in logic to use a pre-reserved
stack slot when there is one, and emit the copy to target_reg in the
conversion seq if stack_parm was set up there.
for gcc/ChangeLog
PR rtl-optimization/67753
PR rtl-optimization/64164
* function.c (assign_parm_setup_block): Avoid allocating a
stack slot if we don't have an ABI-reserved one. Emit the
copy to target_reg in the conversion seq if the copy from
entry_parm is in it too. Don't use the conversion seq to copy
a PARALLEL to a REG or a CONCAT.
From-SVN: r229840
Joost VandeVondele [Fri, 6 Nov 2015 09:51:12 +0000 (09:51 +0000)]
Add testcases for middle-end/53852 and middle-end/67518
2015-11-06 Joost VandeVondele <vondele@gnu.gcc.org>
PR middle-end/53852
PR middle-end/67518
* gfortran.dg/PR67518.f90: New test.
* gfortran.dg/PR53852.f90: New test.
From-SVN: r229839
Richard Biener [Fri, 6 Nov 2015 09:46:17 +0000 (09:46 +0000)]
tree-hash-traits.h (tree_operand_hash): Provide equal, not equal_keys.
2015-11-06 Richard Biener <rguenther@suse.de>
* tree-hash-traits.h (tree_operand_hash): Provide equal, not
equal_keys.
From-SVN: r229838
Cesar Philippidis [Fri, 6 Nov 2015 02:03:48 +0000 (18:03 -0800)]
gimplify.c (gimplify_scan_omp_clauses): Add support for OMP_CLAUSE_TILE.
gcc/
* gimplify.c (gimplify_scan_omp_clauses): Add support for
OMP_CLAUSE_TILE. Update handling of OMP_CLAUSE_INDEPENDENT.
(gimplify_adjust_omp_clauses): Likewise.
* omp-low.c (scan_sharing_clauses): Add support for OMP_CLAUSE_TILE.
* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_TILE.
* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE_TILE.
* tree.c (omp_clause_num_ops): Add an entry for OMP_CLAUSE_TILE.
(omp_clause_code_name): Likewise.
(walk_tree_1): Handle OMP_CLAUSE_TILE.
* tree.h (OMP_TILE_LIST): New macro.
gcc/c-family/
* c-omp.c (c_oacc_split_loop_clauses): Make TILE, GANG, WORKER, VECTOR,
AUTO, SEQ, INDEPENDENT and PRIVATE loop clauses. Associate REDUCTION
clauses with parallel and kernels and loops.
* c-pragma.h (enum pragma_omp_clause): Add entries for
PRAGMA_OACC_CLAUSE_{INDEPENDENT,TILE,DEFAULT}.
* pt.c (tsubst_omp_clauses): Add support for OMP_CLAUSE_{NUM_GANGS,
NUM_WORKERS,VECTOR_LENGTH,GANG,WORKER,VECTOR,ASYNC,WAIT,TILE,AUTO,
INDEPENDENT,SEQ}.
(tsubst_expr): Add support for OMP_CLAUSE_{KERNELS,PARALLEL,LOOP}.
gcc/c/
* c-parser.c (c_parser_omp_clause_name): Add support for
PRAGMA_OACC_CLAUSE_INDEPENDENT and PRAGMA_OACC_CLAUSE_TILE.
(c_parser_omp_clause_default): Add is_oacc argument. Handle
default(none) in OpenACC.
(c_parser_oacc_shape_clause): Allow pointer variables as gang static
arguments.
(c_parser_oacc_clause_tile): New function.
(c_parser_oacc_all_clauses): Add support for OMP_CLAUSE_DEFAULT,
OMP_CLAUSE_INDEPENDENT and OMP_CLAUSE_TILE.
(OACC_LOOP_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_{PRIVATE,INDEPENDENT,
TILE}.
(OACC_KERNELS_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
(OACC_PARALLEL_MASK): Add PRAGMA_OACC_CLAUSE_{DEFAULT,PRIVATE,
FIRSTPRIVATE}.
(c_parser_omp_all_clauses): Update call to c_parser_omp_clause_default.
(c_parser_oacc_update): Update the error message for missing clauses.
* c-typeck.c (c_finish_omp_clauses): Add support for OMP_CLAUSE_TILE
and OMP_CLAUSE_INDEPENDENT.
gcc/cp/
* parser.c (cp_parser_omp_clause_name): Add support for
PRAGMA_OACC_CLAUSE_INDEPENDENT and PRAGMA_OACC_CLAUSE_TILE.
(cp_parser_oacc_shape_clause): Allow pointer variables as gang static
arguments.
(cp_parser_oacc_clause_tile): New function.
(cp_parser_omp_clause_default): Add is_oacc argument. Handle
default(none) in OpenACC.
(cp_parser_oacc_all_clauses): Add support for
(cp_parser_omp_all_clauses): Update call to
cp_parser_omp_clause_default.
PRAGMA_OACC_CLAUSE_{DEFAULT,INDEPENDENT,TILE,PRIVATE,FIRSTPRIVATE}.
(OACC_LOOP_CLAUSE_MASK): Add PRAGMA_OACC_CLAUSE_{PRIVATE,INDEPENDENT,
TILE}.
(OACC_KERNELS_MASK): Add PRAGMA_OACC_CLAUSE_DEFAULT.
(OACC_PARALLEL_MASK): Add PRAGMA_OACC_CLAUSE_{DEFAULT,PRIVATE,
FIRSTPRIVATE}.
(cp_parser_oacc_update): Update the error message for missing clauses.
* semantics.c (finish_omp_clauses): Add support for
OMP_CLAUSE_INDEPENDENT and OMP_CLAUSE_TILE.
gcc/fortran/
* openmp.c (gfc_match_omp_clauses): Update support for the tile
and default clauses in OpenACC.
(gfc_match_oacc_update): Error when data clauses are supplied.
(oacc_compatible_clauses): Delete.
(resolve_omp_clauses): Give special care for OpenACC reductions.
Also update error reporting for the tile clause.
(resolve_oacc_loop_blocks): Update error reporting for the tile clause.
* trans-openmp.c (gfc_trans_omp_clauses): Update OMP_CLAUSE_SEQ. Add
OMP_CLAUSE_{AUTO,TILE} and add support the the gang static argument.
(gfc_trans_oacc_combined_directive): Update the list of clauses which
are split to acc loops.
gcc/testsuite/
* c-c++-common/goacc/combined-directives.c: New test.
* c-c++-common/goacc/loop-clauses.c: New test.
* c-c++-common/goacc/tile.c: New test.
* c-c++-common/goacc/loop-shape.c: Add test for pointer variable
as gang static arguments.
* c-c++-common/goacc/update-1.c: Adjust expected error message.
* g++.dg/goacc/template.C: New test.
* gfortran.dg/goacc/combined-directives.f90: New test.
* gfortran.dg/goacc/default.f95: New test.
* gfortran.dg/goacc/default_none.f95: New test.
* gfortran.dg/goacc/firstprivate-1.f95: New test.
* gfortran.dg/goacc/gang-static.f95: New test.
* gfortran.dg/goacc/kernels-loop-inner.f95: New test.
* gfortran.dg/goacc/kernels-loops-adjacent.f95: New test.
* gfortran.dg/goacc/list.f95: Update test.
* gfortran.dg/goacc/loop-2.f95: Likewise.
* gfortran.dg/goacc/loop-4.f95: New test.
* gfortran.dg/goacc/loop-5.f95: New test.
* gfortran.dg/goacc/loop-6.f95: New test.
* gfortran.dg/goacc/loop-tree-1.f90: Update test.
* gfortran.dg/goacc/multi-clause.f90: New test.
* gfortran.dg/goacc/parallel-tree.f95: Update test.
* gfortran.dg/goacc/update.f95: New test.
Co-Authored-By: James Norris <jnorris@codesourcery.com>
Co-Authored-By: Nathan Sidwell <nathan@codesourcery.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r229832
Martin Sebor [Fri, 6 Nov 2015 01:08:53 +0000 (01:08 +0000)]
PR c++/67942 - diagnose placement new buffer overflow
gcc/cp/
* cp/init.c (warn_placement_new_too_small): Avoid assuming
the size of the first operand of placement new or its type
is known.
gcc/testsuite/
* g++.dg/warn/Wplacement-new-size.C: Exercise placement new
invocations where the size of the destination buffer object
or its type (or both) is unknown.
From-SVN: r229831
GCC Administrator [Fri, 6 Nov 2015 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r229830
Martin Sebor [Thu, 5 Nov 2015 21:42:10 +0000 (21:42 +0000)]
PR c++/67942 - diagnose placement new buffer overflow
gcc/
* invoke.texi (-Wplacement-new): Document new option.
* gcc/testsuite/g++.dg/warn/Wplacement-new-size.C: New test.
gcc/c-family/
* c.opt (-Wplacement-new): New option.
gcc/cp/
* cp/init.c (warn_placement_new_too_small): New function.
(build_new_1): Call it.
gcc/testsuite/
* g++.dg/warn/Wplacement-new-size.C: New test.
From-SVN: r229827
Alan Lawrence [Thu, 5 Nov 2015 18:39:38 +0000 (18:39 +0000)]
[PATCH] tree-scalar-evolution.c: Handle LSHIFT by constant
gcc/:
PR tree-optimization/65963
* tree-scalar-evolution.c (interpret_rhs_expr): Try to handle
LSHIFT_EXPRs as equivalent unsigned MULT_EXPRs.
gcc/testsuite/:
* gcc.dg/pr68112.c: New.
* gcc.dg/vect/vect-strided-shift-1.c: New.
From-SVN: r229825
Marek Polacek [Thu, 5 Nov 2015 18:21:30 +0000 (18:21 +0000)]
re PR c/68090 (VLA compound literal -- "confused by earlier errors, bailing out")
PR c/68090
* c-parser.c (c_parser_postfix_expression_after_paren_type): Don't
deal with pre-evaluation on invalid types.
* gcc.dg/pr68090.c: New test.
From-SVN: r229823
James Greenhalgh [Thu, 5 Nov 2015 18:11:12 +0000 (18:11 +0000)]
[Patch ifcvt] Teach RTL ifcvt to handle multiple simple set instructions
gcc/
* ifcvt.c (bb_ok_for_noce_convert_multiple_sets): New.
(noce_convert_multiple_sets): Likewise.
(noce_process_if_block): Call them.
gcc/testsuite/
* gcc.dg/ifcvt-4.c: New.
From-SVN: r229822
Paolo Carlini [Thu, 5 Nov 2015 16:47:40 +0000 (16:47 +0000)]
re PR c++/67846 (ICE on code with lambda expression on x86_64-linux-gnu in check_return_expr, at cp/typeck.c:8609)
/cp
2015-11-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67846
* parser.c (cp_parser_lambda_body): Check lambda_return_type
return value.
* typeck2.c (cxx_incomplete_type_diagnostic): Print member or
member function used invalidly.
/testsuite
2015-11-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/67846
* g++.dg/cpp0x/lambda/lambda-ice15.C: New.
From-SVN: r229819
Nathan Sidwell [Thu, 5 Nov 2015 15:46:59 +0000 (15:46 +0000)]
gimple-fold.c: Include omp-low.h.
* gimple-fold.c: Include omp-low.h.
(fold_internal_goacc_dim): New.
(gimple_fold_call): Call it.
From-SVN: r229816