1. 09 Nov, 2015 19 commits
    • i386: Disallow address spaces with string insns · 16734677
      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 committed
    • i386: Handle address spaces in movabs patterns · fe5f9263
      	* config/i386/i386.md (*movabs<mode>_1): Print the full memory rtx.
      	(*movabs<mode>_2): Likewise.
      
      From-SVN: r230001
      Richard Henderson committed
    • Add hook for modifying debug info for address spaces · f736b911
              * 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 committed
    • Add TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID · 6626f970
              * 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 committed
    • Avoid CSE of MEMs in different address spaces · bd68a3a7
              * 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 committed
    • re PR tree-optimization/66768 (address space gets lost on literal pointer) · f0ebde5a
      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
      Richard Henderson committed
    • [PATCH] Minor refactoring in tree-ssanames.c & freelists verifier · d2e2feaa
      [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
      Jeff Law committed
    • re PR fortran/68053 (lower bound of implied shape array restricted too much) · cdffe788
      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
      Steven G. Kargl committed
    • Configury changes for obstack optimization · 61c94e79
      Missed from last patch
      
      	* config.in: Regenerate.
      
      From-SVN: r229991
      Alan Modra committed
    • Configury changes for obstack optimization · 126e0b6b
      	* configure.ac: Check size of size_t.
      	* configure: Regenerate.
      
      From-SVN: r229990
      Alan Modra committed
    • Silence obstack.c -Wc++compat warning · a186d523
      	* 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 committed
    • Modify obstack.[hc] to avoid having to include other gnulib files · f0e525fe
      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 committed
    • Copy gnulib obstack files · c9f265c9
      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 committed
    • Update libsanitizer obstack interceptors · 62c0f0a6
      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 committed
    • Correct libvtv obstack use · 37697711
      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 committed
    • New obstack_next_free is not an lvalue · c240b3e0
      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
      Alan Modra committed
    • Fix bb-reorder problem with degenerate cond_jump (PR68182) · d4c8d5ed
      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
      Segher Boessenkool committed
    • [PATCH] Remove backedge handling support in tree-ssa-threadupdate.c · 4f70cb39
      	* 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
      Jeff Law committed
    • Daily bump. · a2478e36
      From-SVN: r229980
      GCC Administrator committed
  2. 08 Nov, 2015 9 commits
  3. 07 Nov, 2015 12 commits
    • * config/sparc/sparc.opt (mfix-at697f): Add final period. · cad669df
      From-SVN: r229941
      Eric Botcazou committed
    • Wno-frame-address.c: Skip on hppa*-*-*. · 171258f7
      	* gcc.dg/Wno-frame-address.c: Skip on hppa*-*-*.
      
      From-SVN: r229940
      John David Anglin committed
    • re PR fortran/68153 (ICE for intrinsic reshape with negative dim in effective shape) · 57e59620
      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 committed
    • re PR fortran/68151 (ICE on using select case with function of wrong type) · 727cde64
      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
      Steven G. Kargl committed
    • i386: Use the STC bb-reorder algorithm at -Os (PR67864) · bc05d49d
      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
      Segher Boessenkool committed
    • replace BITS_PER_UNIT with __CHAR_BIT__ in target libs · a153644f
      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
      Trevor Saunders committed
    • atexit.c: New file. · 3dee689d
      * 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
      David Edelsohn committed
    • Handle internal functions in is_tm_pure_call · 6ca5a442
      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 committed
    • Move #undef DEF_BUILTIN* to builtins.def · 0aad0198
      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 committed
    • Move #undef DEF_INTERNAL_FN to internal-fn.def · 46e343b8
      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 committed
    • Move const char * -> int/fp folds to fold-const-call.c · df838ef0
      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 committed
    • Move constant bitop and bswap folds to fold-const-call.c · db9bd5d5
      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 committed