- Nov 16, 2016
-
-
Maxim Ostapenko authored
PR sanitizer/78307 * ubsan/ubsan_handlers.cc (__ubsan_handle_cfi_bad_icall): New function. ( __ubsan_handle_cfi_bad_icall_abort): Likewise. * ubsan/ubsan_handlers.h (struct CFIBadIcallData): New type. * ubsan/ubsan_handlers_cxx.cc (__ubsan_handle_cfi_bad_type): New function. (__ubsan_handle_cfi_bad_type_abort): Likewise. * ubsan/ubsan_handlers_cxx.h (struct CFIBadTypeData): New type. (__ubsan_handle_cfi_bad_type): Export function. (__ubsan_handle_cfi_bad_type_abort): Likewise. * HOWTO_MERGE: Update documentation. From-SVN: r242478
-
Richard Sandiford authored
The CONCAT handling in emit_group_load chooses between doing an extraction from a single component or forcing the whole thing to memory and extracting from there. The condition for the former (more efficient) option was: if ((bytepos == 0 && bytelen == slen0) || (bytepos != 0 && bytepos + bytelen <= slen)) On the one hand this seems dangerous, since the second line allows bit ranges that start in the first component and leak into the second. On the other hand it seems strange to allow references that start after the first byte of the second component but not those that start after the first byte of the first component. This led to a pessimisation of things like gcc.dg/builtins-54.c for hppa64-hp-hpux11.23. This patch simply checks whether the reference is contained within a single component. It also makes sure that we do an extraction on anything that doesn't span the whole component (even if it's constant). gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * expr.c (emit_group_load_1): Tighten check for whether an access involves only one operand of a CONCAT. Use extract_bit_field for constants if the bit range does span the whole operand. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242477
-
Richard Sandiford authored
If the size passed in to rtx_addr_can_trap_p was zero, the frame handling would get the size from the mode instead. However, this too can be zero if the mode is BLKmode, i.e. if we have a BLKmode memory reference with no MEM_SIZE (which should be rare these days). This meant that the conditions for a 4-byte access at offset X were stricter than those for an access of unknown size at offset X. This patch checks whether the size is still zero, as the SYMBOL_REF handling does. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * rtlanal.c (rtx_addr_can_trap_p_1): Handle unknown sizes. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242476
-
Richard Sandiford authored
vect_transform_loop has to reduce three iteration counts by the vectorisation factor: nb_iterations_upper_bound, nb_iterations_likely_upper_bound and nb_iterations_estimate. All three are latch execution counts rather than loop body execution counts. The calculations were taking that into account for the first two, but not for nb_iterations_estimate. This patch updates the way the calculations are done to fix this and to add a bit more commentary about what is going on. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * tree-vect-loop.c (vect_transform_loop): Protect the updates of all three iteration counts with an any_* test. Use a single update for each count. Fix the calculation of nb_iterations_estimate. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242475
-
Richard Sandiford authored
Needed this to test the effect of the SVE patches on other targets. gcc/ * config/pdp11/pdp11.c: Include dbxout.h. From-SVN: r242474
-
Richard Sandiford authored
The old code still built thanks to the brackets in the definition of XVECEXP. gcc/ * config/arc/arc.c (arc_loop_hazard): Add missing brackets. From-SVN: r242473
-
Senthil Kumar Selvaraj authored
The test assumes short is always smaller than int, and therefore does not expect a warning when the logical operands are of type short and int. This isn't true for the avr - shorts and ints are of the same size, and therefore the warning triggers for the above case also. Fix by explicitly typedef'ing __INT32_TYPE for int and __INT16_TYPE__ for short if the target's int size is less than 4 bytes. gcc/testsuite/ 2016-11-16 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> * c-c++-common/Wlogical-op-1.c: Use __INT{16,32}_TYPE__ instead of {short,int} if __SIZEOF_INT__ is less than 4 bytes. From-SVN: r242472
-
Kyrylo Tkachov authored
PR target/78364 * config/arm/arm.md (*extv_reg): Restrict operands 2 and 3 to the proper ranges for an SBFX instruction. (extzv_t2): Likewise for UBFX. From-SVN: r242471
-
Richard Biener authored
re PR tree-optimization/78348 ([7 REGRESSION] 15% performance drop for coremark-pro/nnet-test after r242038) 2016-11-16 Richard Biener <rguenther@suse.de> PR tree-optimization/78348 * tree-loop-distribution.c (enum partition_kind): Add PKIND_MEMMOVE. (generate_memcpy_builtin): Honor PKIND_MEMCPY on the partition. (classify_partition): Set PKIND_MEMCPY if dependence analysis revealed no dependency, PKIND_MEMMOVE otherwise. * gcc.dg/tree-ssa/ldist-24.c: New testcase. From-SVN: r242470
-
Jakub Jelinek authored
re PR sanitizer/77823 (ICE: in ubsan_encode_value, at ubsan.c:137 with -fsanitize=undefined and vector types) PR sanitizer/77823 * ubsan.c (ubsan_build_overflow_builtin): Add DATAP argument, if it points to non-NULL tree, use it instead of ubsan_create_data. (instrument_si_overflow): Handle vector signed integer overflow checking. * ubsan.h (ubsan_build_overflow_builtin): Add DATAP argument. * tree-vrp.c (simplify_internal_call_using_ranges): Punt for vector IFN_UBSAN_CHECK_*. * internal-fn.c (expand_addsub_overflow): Add DATAP argument, pass it through to ubsan_build_overflow_builtin. (expand_neg_overflow, expand_mul_overflow): Likewise. (expand_vector_ubsan_overflow): New function. (expand_UBSAN_CHECK_ADD, expand_UBSAN_CHECK_SUB, expand_UBSAN_CHECK_MUL): Use tit for vector arithmetics. (expand_arith_overflow): Adjust expand_*_overflow callers. * c-c++-common/ubsan/overflow-vec-1.c: New test. * c-c++-common/ubsan/overflow-vec-2.c: New test. From-SVN: r242469
-
Waldemar Brodkorb authored
PR libgcc/68468 * unwind-dw2-fde-dip.c: Fix build on FDPIC targets. From-SVN: r242468
-
Marek Polacek authored
From-SVN: r242467
-
GCC Administrator authored
From-SVN: r242466
-
- Nov 15, 2016
-
-
Matthias Klose authored
2016-11-16 Matthias Klose <doko@ubuntu.com> * doc/install.texi: Remove references to java/libjava. From-SVN: r242463
-
Jerry DeLisle authored
2016-11-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> Thomas Koenig <tkoenig@gcc.gnu.org> PR libgfortran/51119 * Makefile.am: Add new optimization flags matmul. * Makefile.in: Regenerate. * m4/matmul.m4: For the case of all strides = 1, implement a fast blocked matrix multiply. Fix some whitespace. * generated/matmul_c10.c: Regenerate. * generated/matmul_c16.c: Regenerate. * generated/matmul_c4.c: Regenerate. * generated/matmul_c8.c: Regenerate. * generated/matmul_i1.c: Regenerate. * generated/matmul_i16.c: Regenerate. * generated/matmul_i2.c: Regenerate. * generated/matmul_i4.c: Regenerate. * generated/matmul_i8.c: Regenerate. * generated/matmul_r10.c: Regenerate. * generated/matmul_r16.c: Regenerate. * generated/matmul_r4.c: Regenerate. * generated/matmul_r8.c: Regenerate. 2016-11-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR libgfortran/51119 * gfortran.dg/matmul_12.f90: New test case. From-SVN: r242462
-
Kugan Vivekanandarajah authored
gcc/ChangeLog: 2016-11-16 Kugan Vivekanandarajah <kuganv@linaro.org> * tree-ssa-coalesce.c (register_default_def): Remove register_ssa_partition. (create_outofssa_var_map): Likewise. * tree-ssa-live.c (register_ssa_partition_check): Remove. * tree-ssa-live.h (register_ssa_partition): Likewise. From-SVN: r242461
-
Bernd Edlinger authored
2016-11-15 Bernd Edlinger <bernd.edlinger@hotmail.de> * genattrtab.c (attr_rtx_1): Avoid allocating new rtx objects. Clear ATTR_CURR_SIMPLIFIED_P for re-used binary rtx objects. Use DEF_ATTR_STRING for string arguments. Use RTL_HASH for integer arguments. Only set ATTR_PERMANENT_P on newly hashed rtx when all sub-rtx are also permanent. (attr_eq): Simplify. (attr_copy_rtx): Remove. (make_canonical, get_attr_value): Use attr_equal_p. (copy_boolean): Rehash NOT. (simplify_test_exp_in_temp, optimize_attrs): Remove call to attr_copy_rtx. (attr_alt_intersection, attr_alt_union, attr_alt_complement, mk_attr_alt): Rehash EQ_ATTR_ALT. (make_automaton_attrs): Use attr_eq. From-SVN: r242460
-
Matthias Klose authored
2016-11-15 Matthias Klose <doko@ubuntu.com> * doc/install.texi: Remove references to java/libjava. * doc/invoke.texi: Likewise. * doc/standards.texi: Likewise. From-SVN: r242456
-
Matthias Klose authored
2016-11-15 Matthias Klose <doko@ubuntu.com> * doc/install.texi: Remove references to java/libjava. * doc/sourcebuild.texi: Likewise. From-SVN: r242455
-
Jonathan Wakely authored
PR libstdc++/59406 * include/bits/functional_hash.h: Add comment noting difference from FNV-1a. * include/tr1/functional_hash.h: Likewise. * libsupc++/hash_bytes.cc: Likewise. From-SVN: r242454
-
Jonathan Wakely authored
* include/bits/basic_string.h: Reuse _If_sv alias template for new constructor. From-SVN: r242453
-
Jonathan Wakely authored
* doc/xml/manual/intro.xml: Document LWG 2770 status. Remove entries for 2742 and 2748. * doc/html/*: Regenerate. * include/std/utility (__tuple_size_cv_impl): New helper to safely detect tuple_size<T>::value, as per LWG 2770. (tuple_size<cv T>): Adjust partial specializations to derive from __tuple_size_cv_impl. * testsuite/20_util/tuple/cv_tuple_size.cc: Test SFINAE-friendliness. From-SVN: r242452
-
Mark Wielaard authored
When constructing an :? or fold expression that requires a third expression only the first and second were explicitly checked to not be NULL. Since the third expression is also required in these constructs it needs to be explicitly checked and rejected when missing. Otherwise the demangler will crash once it tries to d_print the NULL component. Added two examples to demangle-expected of strings that would crash before this fix. Found by American Fuzzy Lop (afl) fuzzer. From-SVN: r242451
-
Mark Wielaard authored
In various situations the cplus_demangle () function could read past the end of input causing crashes. Add checks in various places to not advance the demangle string location and fail early when end of string is reached. Add various examples of input strings to the testsuite that would crash test-demangle before the fixes. Found by using the American Fuzzy Lop (afl) fuzzer. libiberty/ChangeLog: * cplus-dem.c (demangle_signature): After 'H', template function, no success and don't advance position if end of string reached. (demangle_template): After 'z', template name, return zero on premature end of string. (gnu_special): Guard strchr against searching for zero characters. (do_type): If member, only advance mangled string when 'F' found. * testsuite/demangle-expected: Add examples of strings that could crash the demangler by reading past end of input. From-SVN: r242450
-
Jonathan Wakely authored
* testsuite/libstdc++-prettyprinters/cxx17.cc: Adjust test for variant<T&>. From-SVN: r242449
-
Uros Bizjak authored
* gcc.target/i386/funcspec-56.inc: New file. * gcc.target/i386.funcspec-5.c: Include funcspec-56.inc. Remove common 32-bit and 64-bit function specific options. * gcc.target/i386.funcspec-6.c: Ditto. From-SVN: r242448
-
Richard Sandiford authored
Several definitions of INCOMING_RETURN_ADDR_RTX used gen_rtx_REG (VOIDmode, ...), which with later patches would trip an assert. This patch converts them to use Pmode instead. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use Pmode instead of VOIDmode. * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Likewise. * config/iq2000/iq2000.h (INCOMING_RETURN_ADDR_RTX): Likewise. * config/m68k/m68k.h (INCOMING_RETURN_ADDR_RTX): Likewise. * config/microblaze/microblaze.h (INCOMING_RETURN_ADDR_RTX): Likewise. * config/mips/mips.h (INCOMING_RETURN_ADDR_RTX): Likewise. * config/mn10300/mn10300.h (INCOMING_RETURN_ADDR_RTX): Likewise. * config/nios2/nios2.h (INCOMING_RETURN_ADDR_RTX): Likewise. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242447
-
Richard Sandiford authored
Using MEM_SIZE is more general, since it copes with cases where targets are forced to use BLKmode references for whatever reason. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * dce.c (check_argument_store): Pass the size instead of the memory reference. (find_call_stack_args): Pass MEM_SIZE to check_argument_store. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242446
-
Richard Sandiford authored
After simplifying the operands of a PLUS, canon_rtx checked only for cases in which one of the simplified operands was a constant, falling back to gen_rtx_PLUS otherwise. This left the PLUS in a non-canonical order if one of the simplified operands was (plus (reg R1) (const_int X)); we'd end up with: (plus (plus (reg R1) (const_int Y)) (reg R2)) rather than: (plus (plus (reg R1) (reg R2)) (const_int Y)) Fixing this exposed new DSE opportunities on spu-elf in gcc.c-torture/execute/builtins/strcat-chk.c but otherwise it doesn't seem to have much practical effect. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * alias.c (canon_rtx): Use simplify_gen_binary. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242445
-
Richard Sandiford authored
LOAD_EXTEND_OP only applies to scalar integer modes that are narrower than a word. However, callers weren't consistent about which of these checks they made beforehand, and also weren't consistent about whether "smaller" was based on (bit)size or precision (IMO it's the latter). This patch adds a wrapper to try to make the macro easier to use. LOAD_EXTEND_OP is often used to disable transformations that aren't beneficial when extends from memory are free, so being stricter about the check accidentally exposed more optimisation opportunities. "SUBREG_BYTE (...) == 0" and subreg_lowpart_p are implied by paradoxical_subreg_p, so the patch also removes some redundant tests. The patch doesn't change reload, since different checks could have unforeseen consequences. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * rtl.h (load_extend_op): Declare. * rtlanal.c (load_extend_op): New function. (nonzero_bits1): Use it. (num_sign_bit_copies1): Likewise. * cse.c (cse_insn): Likewise. * fold-const.c (fold_single_bit_test): Likewise. (fold_unary_loc): Likewise. * fwprop.c (free_load_extend): Likewise. * postreload.c (reload_cse_simplify_set): Likewise. (reload_cse_simplify_operands): Likewise. * combine.c (try_combine): Likewise. (simplify_set): Likewise. Remove redundant SUBREG_BYTE and subreg_lowpart_p checks. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242444
-
Richard Sandiford authored
simplify_shift_const_1 handles both shifts of scalars by scalars and shifts of vectors by scalars. For vectors this means that each element is shifted by the same amount. However: (a) the two cases weren't always distinguished, so we'd try things for vectors that only made sense for scalars. (b) a lot of the range and bitcount checks were based on the bitsize or precision of the full shifted operand, rather than the mode of each element. Fixing (b) accidentally exposed more optimisation opportunities, although that wasn't the point of the patch. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * combine.c (simplify_shift_const_1): Use the number of bits in the inner mode to determine the range of the shift. When handling shifts of vectors, skip any rules that apply only to scalars. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242442
-
Richard Sandiford authored
The old assignment to bitwidth was before we handled VOIDmode with: if (mode == VOIDmode) mode = GET_MODE (x); so when VOIDmode was specified we would always use: if (bitwidth < GET_MODE_PRECISION (GET_MODE (x))) { num0 = cached_num_sign_bit_copies (x, GET_MODE (x), known_x, known_mode, known_ret); return MAX (1, num0 - (int) (GET_MODE_PRECISION (GET_MODE (x)) - bitwidth)); } For a zero bitwidth this always returns 1 (which is the most pessimistic result). gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * rtlanal.c (num_sign_bit_copies1): Calculate bitwidth after handling VOIDmode. Co-Authored-By:
Alan Hayward <alan.hayward@arm.com> Co-Authored-By:
David Sherwood <david.sherwood@arm.com> From-SVN: r242440
-
Matthias Klose authored
2016-11-15 Matthias Klose <doko@ubuntu.com> * Makefile.def: Remove references to GCJ. * Makefile.tpl: Likewise. * Makefile.in: Regenerate. From-SVN: r242439
-
Matthias Klose authored
From-SVN: r242438
-
Tim Shen authored
* include/std/variant: Remove variant<T&>, variant<void>, variant<> support to rebase on the post-Issaquah design. * testsuite/20_util/variant/compile.cc: Likewise. From-SVN: r242437
-
Martin Jambor authored
* testsuite/libgomp.fortran/examples-4/device-1.f90 (e_57_1): Add mapping clauses to target constructs. * testsuite/libgomp.fortran/examples-4/device-3.f90 (e_57_3): Ditto. Co-Authored-By:
Alexander Monakov <amonakov@ispras.ru> From-SVN: r242436
-
Jakub Jelinek authored
* g++.dg/cpp1z/decomp14.C: New test. * g++.dg/cpp1z/decomp15.C: New test. * g++.dg/cpp1z/decomp16.C: New test. From-SVN: r242435
-
Jakub Jelinek authored
* decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl, set DECL_ASSEMBLER_NAME. * parser.c (cp_parser_decomposition_declaration): Likewise if returning error_mark_node. * mangle.c (mangle_decomp): New function. * cp-tree.h (mangle_decomp): New declaration. * g++.dg/cpp1z/decomp13.C: New test. From-SVN: r242434
-
Matthias Klose authored
<toplevel> 2016-11-15 Matthias Klose <doko@ubuntu.com> * config-ml.in: Remove references to GCJ. * configure.ac: Likewise. * configure: Regenerate. config/ 2016-11-15 Matthias Klose <doko@ubuntu.com> multi.m4: Don't set GCJ. gcc/ 2016-11-15 Matthias Klose <doko@ubuntu.com> * doc/install.texi: Remove references to gcj/libjava. * doc/invoke.texi: Likewise. */ (where necessary) 2016-11-15 Matthias Klose <doko@ubuntu.com> * configure: Regenerate. From-SVN: r242433
-
Jason Merrill authored
* semantics.c (finish_decltype_type): Strip references for a tuple decomposition. * cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables. From-SVN: r242432
-