- 08 Dec, 2016 3 commits
-
-
From-SVN: r243423
GCC Administrator committed -
I managed to get the last obvious fix wrong: mode is M1, GET_MODE (op) is M2. [ adding missing PR marker ] PR rtl-optimization/78638 * simplify-rtx.c (simplify_truncation): M2 is not mode, it is GET_MODE (op). Fix this. From-SVN: r243420
Segher Boessenkool committed -
PR c/53562 - Add -Werror= support for -D_FORTIFY_SOURCE / __builtin___memcpy_chk PR middle-end/77784 - duplicate warning for snprintf when n > object size PR middle-end/78149 - missing warning on strncpy buffer overflow due to an excessive bound PR middle-end/78138 - missing warnings on buffer overflow with non-constant source length gcc/c-family/ChangeLog: PR c/53562 PR middle-end/77784 PR middle-end/78149 PR middle-end/78138 * c.opt (-Wstringop-overflow): New option. gcc/ChangeLog: PR middle-end/77784 PR middle-end/78149 PR middle-end/78138 * builtins.c (expand_builtin_strcat, expand_builtin_strncat): New functions. (compute_dest_size, get_size_range, check_sizes, check_strncat_sizes) (check_memop_sizes): Same. (expand_builtin_memcpy): Call check memop_sizes. (expand_builtin_mempcpy): Same. (expand_builtin_memset): Same, (expand_builtin_bzero): Same. (expand_builtin_memory_chk): Call check_sizes. (expand_builtin_strcpy): Same. (expand_builtin_strncpy): Same. (maybe_emit_sprintf_chk_warning): Same. (expand_builtin): Handle strcat and strncat. (fini_object_sizes): Reset pointers. (compute_object_size): New function. * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid issuing warnings also issued during built-in expansion. * doc/invoke.texi (Warning Options): Document -Wstringop-overflow. gcc/testsuite/ChangeLog: PR middle-end/77784 PR middle-end/78149 PR middle-end/78138 * c-c++-common/Wsizeof-pointer-memaccess2.c: Adjust expected diagnostic. * g++.dg/ext/builtin-object-size3.C (bar): Same. * g++.dg/ext/strncpy-chk1.C: Same. * g++.dg/opt/memcpy1.C: Same. * g++.dg/torture/Wsizeof-pointer-memaccess1.C: Same. * gcc.c-torture/compile/pr55569.c: Disable -Wstringop-overflow. * gcc.dg/Wobjsize-1.c: Adjust expected diagnostic. * gcc.dg/attr-alloc_size.c: Same. * gcc.dg/builtin-stringop-chk-1.c: Adjust expected diagnostic. * gcc.dg/builtin-stringop-chk-2.c: Same. * gcc.dg/builtin-stringop-chk-4.c: New test. * gcc.dg/builtin-strncat-chk-1.c: Adjust expected diagnostic. * gcc.dg/memcpy-2.c: Same. * gcc.dg/pr40340-1.c: Same. * gcc.dg/pr40340-2.c (main): Same. * gcc.dg/pr40340-5.c (main): Same. * gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Same. * gcc.dg/torture/pr71132.c: Disable -Wstringop-overflow. * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust text of expected warning. * gfortran.dg/char_length_3.f90: Prune expected warnings. * gfortran.dg/pr38868.f: Add expected warnings. From-SVN: r243419
Martin Sebor committed
-
- 07 Dec, 2016 32 commits
-
-
[gcc] 2016-12-07 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/72717 * config/rs6000/rs6000.c (rs6000_expand_vector_init): If the V2DImode elements are SUBREG's convert the result into DImode rather than failing in emit_move_insn. [gcc/testsuite] 2016-12-07 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/72717 * gcc.target/powerpc/pr72717.c: New test. From-SVN: r243418
Michael Meissner committed -
* elf.m4: Revert 2016-06-21 change. * picflag.m4: Likewise. Revert 2016-04-30 change too. * override.m4 (AC_PROG_LEX): Import 2016-01-18 binutils fix for PR binutils/19481. From-SVN: r243417
Alan Modra committed -
* include/bits/stl_tree.h (_Rb_tree<>::_M_copy(_Const_Link_type, _Base_ptr)): Delete. (_Rb_tree<>::_M_copy(const _Rb_tree&, _NodeGen&)): New. (_Rb_tree<>::_M_copy(const _Rb_tree&)): New, use latter. (_Rb_tree<>(const _Rb_tree&): Use latter. (_Rb_tree<>(const _Rb_tree&, const allocator_type&)): Likewise. (_Rb_tree<>::_M_move_data(_Rb_tree&, false_type)): Likewise. (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Likewise. (_Rb_tree<>::operator=(const _Rb_tree&)): Likewise. From-SVN: r243380
François Dumont committed -
2016-12-07 François Dumont <fdumont@gcc.gnu.org> * include/bits/stl_map.h (map(const map&)): Make default. (map(map&&)): Likewise. (~map()): Likewise. (operator=(const map&)): Likewise. * include/bits/stl_multimap.h (multimap(const multimap&)): Make default. (multimap(multimap&&)): Likewise. (~multimap()): Likewise. (operator=(const multimap&)): Likewise. * include/bits/stl_set.h (set(const set&)): Make default. (set(set&&)): Likewise. (~set()): Likewise. (operator=(const set&)): Likewise. * include/bits/stl_multiset.h (multiset(const multiset&)): Make default. (multiset(multiset&&)): Likewise. (~multiset()): Likewise. (operator=(const multiset&)): Likewise. * include/bits/stl_tree.h (_Rb_tree_key_compare<>): New. (_Rb_tree_header): New. (_Rb_tree_impl): Inherit from latters. (_Rb_tree_impl()): Make default. (_Rb_tree_impl(const _Rb_tree_impl&)): New. (_Rb_tree<>(const _Rb_tree&): Use latter. (_Rb_tree_impl(_Rb_tree_impl&&)): New, default. (_Rb_tree_impl(const _Key_compare&, const _Node_allocator&)): Delete. (_Rb_tree_impl::_M_reset): Move... (_Rb_tree_header::_M_reset): ...here. (_Rb_tree_impl::_M_initialize): Delete. (_Rb_tree(_Rb_tree&&)): Make default. (_Rb_tree_header::_M_move_data(_Rb_tree_header&)): New. (_Rb_tree<>::_M_move_data(_Rb_tree&, true_type)): Use latter. (_Rb_tree<>(_Rb_tree&&)): Make default. From-SVN: r243379
François Dumont committed -
* builtins.c (fold_builtin_strstr): Removed. (fold_builtin_2): Don't call fold_builtin_strstr. * gimple-fold.c (gimple_fold_builtin_strchr): Check is_strrchr earlier in the strrchr (x, 0) -> strchr (x, 0) optimization. (gimple_fold_builtin_strstr): New function. (gimple_fold_builtin): Call it. * fold-const-call.c (fold_const_call): Handle CFN_BUILT_IN_STRSTR. * gcc.dg/builtin-strstr-1.c: New test. * g++.dg/cpp0x/constexpr-strstr.C: New test. From-SVN: r243378
Jakub Jelinek committed -
PR c++/78692 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Set lhs var to lhs of new_stmt right before noreturn handling rather than to lhs of e->call_stmt early. * g++.dg/torture/pr78692.C: New test. From-SVN: r243377
Jakub Jelinek committed -
gcc/ChangeLog: * read-md.c (rtx_reader::require_char): New method. (require_char_ws): Convert from function to... (rtx_reader::require_char_ws): ...method. (rtx_reader::require_word_ws): New method. * read-md.h (rtx_reader::require_char): New method decl. (require_char_ws): Remove global decl in favor of... (rtx_reader::require_char_ws): ...new method decl. (rtx_reader::require_word_ws): New method decl. (rtx_reader::peek_char): New method decl. From-SVN: r243376
David Malcolm committed -
2016-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/ PR rtl-optimization/78617 * lra-remat.c (do_remat): Initialize live_hard_regs from live in registers, also setting hard registers mapped to pseudo registers. gcc/testsuite/ PR rtl-optimization/78617 * gcc.c-torture/execute/pr78617.c: New test. From-SVN: r243374
Thomas Preud'homme committed -
Move this part of "expand"'s initialization of crtl into its own method so that it can used by the RTL frontend when postprocessing RTL dumps. gcc/ChangeLog: * cfgexpand.c (pass_expand::execute): Move stack initializations to rtl_data::init_stack_alignment and call it. * emit-rtl.c (rtl_data::init_stack_alignment): New method. * emit-rtl.h (rtl_data::init_stack_alignment): New method. From-SVN: r243371
David Malcolm committed -
2016-12-07 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/builtins-3.c: Move built-in tests for P8 and P9 to their own test file. This allows precise constraints on the effective target and compile options. * gcc.target/powerpc/builtins-3-p8.c: New file for the vector compare P8 built-in tests. * gcc.target/powerpc/builtins-3-p9.c: New file for the vector compare P9 built-in tests. From-SVN: r243370
Carl Love committed -
* gcc.target/i386/pr77761.c: Require int128 effective target. (avx512f_test): Delete. (do_main): Rename to avx512f_test. From-SVN: r243367
Uros Bizjak committed -
* include/experimental/bits/fs_path.h (path::_S_convert): Replace uses of C++14 std::remove_cv_t alias template. From-SVN: r243355
Jonathan Wakely committed -
* testsuite/28_regex/traits/char/user_defined.cc: Replace uses of C++14 std::exchange function. From-SVN: r243354
Jonathan Wakely committed -
* testsuite/util/testsuite_hooks.h (THROW): Define. * testsuite/util/replacement_memory_operators.h: Include testsuite_hooks.h and use THROW macro. * testsuite/util/testsuite_tr1.h: Likewise. * testsuite/20_util/allocator/1.cc: Use THROW macro. * testsuite/22_locale/locale/cons/12352.cc: Likewise. * testsuite/23_containers/vector/zero_sized_allocations.cc: Likewise. * testsuite/30_threads/lock_guard/cons/1.cc: Replace dynamic exception specification with noexcept-specifier. * testsuite/ext/pool_allocator/allocate_chunk.cc: Include testsuite_hooks.h and use THROW macro. * testsuite/ext/profile/replace_new.cc: Likewise. From-SVN: r243353
Jonathan Wakely committed -
* include/ext/bitmap_allocator.h (bitmap_allocator::_S_refill_pool) (bitmap_allocator::_M_allocate_single_object) (bitmap_allocator::_M_get): Use _GLIBCXX_THROW macro. From-SVN: r243352
Jonathan Wakely committed -
* testsuite/18_support/bad_exception/59392.cc: Disable for C++17. From-SVN: r243351
Jonathan Wakely committed -
* testsuite/18_support/headers/new/synopsis.cc: Add C++14 and C++17 declarations. * testsuite/18_support/headers/new/synopsis_cxx98.cc: New test. From-SVN: r243349
Jonathan Wakely committed -
GCC caches the whether a function is a leaf in crtl->is_leaf. Using this in the backend is best as leaf_function_p may not work correctly (eg. while emitting prolog or epilog code). There are many reads of crtl->is_leaf before it is initialized. Many targets do in targetm.frame_pointer_required (eg. arm, aarch64, i386, mips, sparc), which is called before register allocation by ira_setup_eliminable_regset and sched_init. Additionally, SHRINK_WRAPPING_ENABLED calls targetm.have_simple_return, which evaluates the condition of the simple_return instruction. On ARM this results in a call to use_simple_return_p which requires crtl->is_leaf to be set correctly. To fix this, initialize crtl->is_leaf in ira_setup_eliminable_regset and early on in ira. A bootstrap did not find any uninitialized reads of crtl->is_leaf on Thumb-2. A follow-up patch will remove incorrect uses of leaf_function_p from the ARM backend. gcc/ * gcc/ira.c (ira_setup_eliminable_regset): Initialize crtl->is_leaf. (ira): Move initialization of crtl->is_leaf earlier. From-SVN: r243347
Wilco Dijkstra committed -
Improve TI mode address offsets - these may either use LDP of 64-bit or LDR of 128-bit, so we need to use the correct intersection of offsets. When splitting a large offset into base and offset, use a signed 9-bit unscaled offset. Remove the Ump constraint on movti and movtf instructions as this blocks the reload optimizer from merging address CSEs (is this supposed to work only on 'm' constraints?). The result is improved codesize, especially wrf and gamess in SPEC2006. gcc/ * config/aarch64/aarch64.md (movti_aarch64): Change Ump to m. (movtf_aarch64): Likewise. * config/aarch64/aarch64.c (aarch64_classify_address): Use correct intersection of offsets. (aarch64_legitimize_address_displacement): Use 9-bit signed offsets. (aarch64_legitimize_address): Use 9-bit signed offsets for TI/TF mode. Use 7-bit signed scaled mode for modes > 16 bytes. From-SVN: r243346
Wilco Dijkstra committed -
gcc/ PR rtl-optimization/78561 * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p) Use constant_pool_empty_p in place of get_pool_size_upper_bound. (rs6000_stack_info): Likewise. (rs6000_emit_prologue): Likewise. (rs6000_elf_declare_function_name): Likewise. (rs6000_set_up_by_prologue): Likewise. (rs6000_can_eliminate): Likewise. * output.h (get_pool_size_upper_bound): Delete. (constant_pool_empty_p): New. * varasm.c (get_pool_size_upper_bound): Delete (constant_pool_empty_p): New. From-SVN: r243345
James Greenhalgh committed -
2016-12-07 Martin Jambor <mjambor@suse.cz> PR c++/78589 * error.c (dump_decl): Use dump_function_name to dump !DECL_LANG_SPECIFIC function decls with no or self-referencing abstract origin. From-SVN: r243344
Martin Jambor committed -
* pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow and avoid re-tsubsting type. From-SVN: r243343
Nathan Sidwell committed -
* cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER & CPTI_DECLTYPE_AUTO_IDENTIFIER. (auto_identifier, decltype_auto_identifier): New. *decl.c (initialize_predefined_identifiers): Add 'auto' and 'decltype(auto)'. (grokdeclarator): Use cached identifier. * pt.c (make_decltype_auto, make_auto, make_constrained_auto, is_auto): Likewise. From-SVN: r243342
Nathan Sidwell committed -
* gcc-interface/decl.c (gnat_to_gnu_entity): When they are global, consider ___XR GNAT encodings variables for renamings as static so they have a location in the debug info. From-SVN: r243341
Pierre-Marie de Rodat committed -
decl.c (gnat_to_gnu_entity): Translate System.Address into ptr_type_node for every foreign convention. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Translate System.Address into ptr_type_node for every foreign convention. (gnat_to_gnu_subprog_type): Likewise for result and parameter types. (gnat_to_gnu_param): Do not do it here for GCC builtins. (intrin_return_compatible_p): Likewise. From-SVN: r243340
Eric Botcazou committed -
From-SVN: r243338
Eric Botcazou committed -
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Subtype>: Also call finish_character_type on Character subtypes. * gcc-interface/utils.c (finish_character_type): Deal with subtypes. From-SVN: r243336
Eric Botcazou committed -
PR tree-optimization/78691 * match.pd ((convert1 (minmax ((convert2 (x) c)))) -> minmax (x c)): Require integral type for the outer expression. gcc/testsuite PR tree-optimization/78691 * gcc.target/i386/pr78691-i386.c: New test. * gcc.target/powerpc/pr78691-ppc.c: New test. From-SVN: r243335
Bin Cheng committed -
* gcc.target/i386/pr70322-1.c: Add -mno-stackrealign to dg-options. * gcc.target/i386/pr70322-2.c: Likewise. * gcc.target/i386/pr70322-3.c: Likewise. * gcc.target/i386/pr70322-4.c: Likewise. From-SVN: r243334
Rainer Orth committed -
gcc * config/aarch64/aarch64.c (aarch64_builtin_support_vector_misalignment): New. (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Define. gcc/testsuite * gcc.target/aarch64/pr71727.c : New Testcase. From-SVN: r243333
Naveen H.S committed -
In r243317 I accidentally introduced an assumption in a selftest in i386.c that Pmode == DImode. This patch conditionalizes the overzealous string comparison to avoid breaking the build on 32-bit i386.c targets. gcc/ChangeLog: PR bootstrap/78705 * config/i386/i386.c (selftest::ix86_test_dumping_memory_blockage): Conditionalize the string comparison on Pmode == DImode. From-SVN: r243332
David Malcolm committed -
From-SVN: r243328
GCC Administrator committed
-
- 06 Dec, 2016 5 commits
-
-
PR tree-optimization/67955 * tree-ssa-alias.c (same_addr_size_stores_p): New function. (stmt_kills_ref_p): Use it. PR tree-optimization/67955 * gcc.dg/tree-ssa/dse-points-to.c: New test. From-SVN: r243325
Tom de Vries committed -
From-SVN: r243324
Eric Botcazou committed -
PR middle-end/78700 * calls.c (expand_call): Move back call to prepare_call_address. From-SVN: r243322
Eric Botcazou committed -
Add a new flag on the Var_expression class that indicates whether the var reference appears in an "lvalue" context (for example, on the LHS of an assignment stmt) or an "rvalue" context (for example, as an argument of a call). Add a traversal pass that visits assignment stmt LHS subtrees so as to mark things prior to backend gen. Select the right context value in other places where Backend::var_expression is called. Reviewed-on: https://go-review.googlesource.com/33990 * go-gcc.cc (Gcc_backend::var_expression): Add Varexpr_context parameter. From-SVN: r243321
Than McIntosh committed -
[gcc] 2016-12-06 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/78658 * config/rs6000/rs6000.md (zero_extendqi<mode>2): Use ^ instead of ?* constraints for the ISA 3.0 patterns, so the register allocator is more likely to allocate QImode/HImode to vector registers for conversion to floating point unless a reload is needed. (zero_extendhi<mode>2): Likewise. (float<QHI:mode><FP_ISA3:mode>2_internal): Properly deal with the first alternative which is converting QImode/HImode to floating point and the QImode/HImode value is in a vector register, and does not allocate the second pseudo register. Remove zero extending into traditional floating point registers, since the instruction used only works on traditional altivec registers. (floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise. [gcc/testsuite] 2016-12-06 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/78658 * gcc.target/powerpc/pr78658.c: New test. From-SVN: r243320
Michael Meissner committed
-