- 22 Jan, 2019 16 commits
-
-
Unfortunately another PCS bug has come to light with the layout of structs whose alignment is dominated by a 64-bit bitfield element. Such fields in the type list appear to have alignment 1, but in reality, for the purposes of alignment of the underlying structure, the alignment is derived from the underlying bitfield's type. We've been getting this wrong since support for over-aligned record types was added several releases back. Worse still, the existing code may generate unaligned memory accesses that may fault on some versions of the architecture. I've taken the opportunity to add a few more tests that check the passing arguments with overalignment in the PCS. Looking through the existing tests it looked like they were really only checking self-consistency and not the precise location of the arguments. PR target/88469 gcc: * config/arm/arm.c (arm_needs_doubleword_align): Return 2 if a record's alignment is dominated by a bitfield with 64-bit aligned base type. (arm_function_arg): Emit a warning if the alignment has changed since earlier GCC releases. (arm_function_arg_boundary): Likewise. (arm_setup_incoming_varargs): Likewise. gcc/testsuite: * gcc.target/arm/aapcs/bitfield1.c: New test. * gcc.target/arm/aapcs/overalign_rec1.c: New test. * gcc.target/arm/aapcs/overalign_rec2.c: New test. * gcc.target/arm/aapcs/overalign_rec3.c: New test. From-SVN: r268151
Richard Earnshaw committed -
2019-01-22 Manfred Schwarb <manfred99@gmx.ch> * gfortran.dg/array_function_5.f90: Fix a dg directive. * gfortran.dg/block_16.f08: Likewise. * gfortran.dg/dec_structure_14.f90: Likewise. * gfortran.dg/namelist_96.f90: Likewise. * gfortran.dg/newunit_5.f90.f90: Moved to * gfortran.dg/newunit_5.f90: here. * gfortran.dg/pdt_28.f03: Likewise. * gfortran.dg/spread_simplify_1.f90: Likewise. From-SVN: r268148
Manfred Schwarb committed -
2019-01-22 Richard Biener <rguenther@suse.de> PR tree-optimization/88862 * graphite-scop-detection.c (scop_detection::graphite_can_represent_scev): Reject ADDR_EXPR. From-SVN: r268147
Richard Biener committed -
2019-01-22 Andrew Stubbs <ams@codesourcery.com> * doc/extend.tex (AMD GCN Function Attributes): New section. * doc/install.texi (amdgcn-unknown-amdhsa): New instructions. * doc/invoke.texi (AMD GCN Options): New section. * doc/md.texi (Constraints for Particular Machines): Add AMD GCN. From-SVN: r268146
Andrew Stubbs committed -
sparc.c (parc_delegitimize_address): Recognize the GOT register and decoded HIGH/LO_SUM combinations for labels in... * config/sparc/sparc.c (parc_delegitimize_address): Recognize the GOT register and decoded HIGH/LO_SUM combinations for labels in PIC mode. From-SVN: r268145
Eric Botcazou committed -
gcc/testsuite/ChangeLog: PR/tree-optimization 88903 * gcc.dg/vect/pr88903-1.c: Add explicit &. From-SVN: r268144
Tamar Christina committed -
PR tree-optimization/88044 * tree-ssa-loop-niter.c (number_of_iterations_cond): If condition is false in the first iteration, but !every_iteration, return false instead of true with niter->niter zero. From-SVN: r268143
Jakub Jelinek committed -
re PR lto/88422 (collect2.exe: fatal error: lto-wrapper returned 1 exit status: file not recognized: file truncated) 2019-01-22 Nidal Faour <nidal.faour@wdc.com> PR lto/88422 * simple-object.c (O_BINARY): Define if not already defined. (simple_object_copy_lto_debug_sections): Create file in binary mode. From-SVN: r268141
Nidal Faour committed -
PR rtl-optimization/88904 * cfgcleanup.c (thread_jump): Verify cond2 doesn't mention any nonequal registers before processing BB_END (b). * gcc.c-torture/execute/pr88904.c: New test. From-SVN: r268140
Jakub Jelinek committed -
PR target/88905 * optabs.c (add_equal_note): Add op0_mode argument, use it instead of GET_MODE (op0). (expand_binop_directly, expand_doubleword_clz, expand_doubleword_popcount, expand_ctz, expand_ffs, expand_unop_direct, maybe_emit_unop_insn): Adjust callers. * gcc.dg/pr88905.c: New test. From-SVN: r268139
Jakub Jelinek committed -
PR rtl-optimization/49429 PR target/49454 PR rtl-optimization/86334 PR target/88906 * expr.c (emit_block_move_hints): Move marking of MEM_EXPRs addressable from here... (emit_block_op_via_libcall): ... to here. * gcc.target/i386/pr86334.c: New test. * gcc.target/i386/pr88906.c: New test. From-SVN: r268138
Jakub Jelinek committed -
2019-01-22 Richard Biener <rguenther@suse.de> * tree-vect-loop.c (vect_analyze_loop_operations): Use auto_vec for cost vector to fix memleak. (vectorize_fold_left_reduction): Properly gather SLP defs. (vectorizable_comparison): Do not swap operands to properly gather SLP defs. From-SVN: r268137
Richard Biener committed -
ChangLog: 2019-01-21 Jiufu Guo <guojiufu@linux.ibm.com> * MAINTAINERS (Write After Approval): Add myself. From-SVN: r268136
Jiufu Guo committed -
The direct cause of this PR is the fact that tls_gdld_nomark didn't handle indirect calls. Also, most indirect calls were being optimised back to direct calls anyway, due to tls_gdld_nomark not checking any of the parallel elements except the first (plus the extra element that distinguishes this call from normal calls). There were other unwanted substitutions too. So this patch attacks the problem of handling special calls in a different way. Rather than adding another element to the call insn parallel to distinguish -mno-tls-markers __tls_get_addr calls from any other calls, we now inspect the second CALL arg. Each call_value_nonlocal and call_value_indirect insn now checks for the tlsgd/ld unspecs when !TARGET_TLS_MARKERS and emits the arg setup insns. I disallow the local call patterns since we'll only see local calls to __tls_get_addr in testcases, and it doesn't seem a good idea to complicate the patterns just for a minor optimisation. Sibling call insns aren't used for libcalls, so none of these insns need to change. The patch also fixes a minor problem with -mno-tls-markers __tls_get_addr calls causing a "li 3,0" instruction to be emitted prior to the arg setup instructions, due to using a libcall with one arg. That isn't correct when the call insn itself sets up its arg. Also, I've tidied the V4 secure-plt calls, generating them in rs6000_call_sysv rather than by splitting in rs6000.md. The CALL_INSN_FUNCTION_USAGE added in edit_tls_call_insn is no longer needed (since git commit 0a4b5c66df9). On the subject of unwanted substitutions, I also saw a _GLOBAL_OFFSET_TABLE_ symbol_ref being substituted for the GOT reg, resulting in code like "addi 3,_GLOBAL_OFFSET_TABLE_,tls_ld@got@tlsld". Fixed by the unspec_tls change. PR target/88614 * config/rs6000/predicates.md (unspec_tls): Ensure GOT reg stays a reg. Allow a const_int. * config/rs6000/rs6000-protos.h (rs6000_output_tlsargs): Declare. * config/rs6000/rs6000.h (IS_V4_FP_ARGS): Define. (IS_NOMARK_TLSGETADDR): Define. * config/rs6000/rs6000.c (edit_tls_call_insn): Delete. (rs6000_output_tlsargs): New function. (rs6000_legitimize_tls_address): Don't say a !TARGET_TLS_MARKERS __tls_get_addr call takes an arg. (rs6000_call_sysv): Generate sysv4 secure plt call pattern here.. * config/rs6000/rs6000.md (call_nonlocal_sysv): ..rather than here, delete split.. (call_value_nonlocal_sysv): ..or here, delete split. (tls_gdld_nomark): Delete. (call_value_indirect_nonlocal_sysv): Use unspec_tls as operand2 predicate. Call rs6000_output_tlsargs. Adjust length to suit. (call_value_nonlocal_sysv): Likewise. (call_value_nonlocal_sysv_secure): Likewise. (call_value_nonlocal_aix): Likewise. (call_value_indirect_aix): Likewise. (call_value_indirect_elfv2): Likewise. (call_value_local32, call_value_local64): Disable for no-mark tls. (call_value_local_aix): Likewise. From-SVN: r268135
Alan Modra committed -
From-SVN: r268134
GCC Administrator committed -
PR go/88927 runtime, internal/cpu: fix build for ARM GNU/Linux Was failing with ../../../libgo/go/internal/cpu/cpu.go:138:2: error: reference to undefined name 'doinit' 138 | doinit() | ^ Fix it by adding in Go 1.12 internal/cpu/cpu_arm.go, and the code in runtime that initializes the values. Fixes https://gcc.gnu.org/PR88927. Reviewed-on: https://go-review.googlesource.com/c/158717 From-SVN: r268131
Ian Lance Taylor committed
-
- 21 Jan, 2019 19 commits
-
-
Restore some of the fixes that were applied to golang_org/x/net/lif but were lost when 1.12 moved the directory to internal/x/net/lif. Add support for reading /proc to fetch argc/argv/env for c-archive mode. Reviewed-on: https://go-review.googlesource.com/c/158640 From-SVN: r268130
Ian Lance Taylor committed -
If there is an error reading or parsing an archive header, the Archive_iterator code would return a dummy header but would not mark itself as done. The effect is that an invalid archive leads to an endless loop reading and re-reading the same archive header. Avoid that by setting the offset to the end of the file, which will cause the iterator to == archive_end. No test since it doesn't seem worth constructing an invalid archive. Reviewed-on: https://go-review.googlesource.com/c/158217 From-SVN: r268129
Ian Lance Taylor committed -
PR c++/88949 * optimize.c (cxx_copy_decl): New function. (clone_body): Use it instead of copy_decl_no_change. * g++.dg/gomp/pr88949.C: New test. From-SVN: r268127
Jakub Jelinek committed -
* Fix a typo in the previous commit. From-SVN: r268126
Dominique d'Humieres committed -
2019-01-21 Manfred Schwarb <manfred99@gmx.ch> * class_66.f90: Fix a dg directive. * debug/pr35154-stabs.f: Likewise. * dec_d_lines_3.f: Likewise. * dec_d_lines_3.f: Likewise. * dec_structure_12.f90: Likewise. * dec_structure_15.f90: Likewise. * deferred_character_31.f90: Likewise. * dtio_31.f03: Likewise. * dtio_32.f03: Likewise. * extends_11.f03: Likewise. * integer_plus.f90: Likewise. * pdt_25.f03: Likewise. * pr58968.f: Likewise. * pr78259.f90: Likewise. * vect/vect-2.f90: Likewise. * matmul_const.f90: Likewise. From-SVN: r268125
Manfred Schwarb committed -
Reduces the memory footprint of the CTFE interpreter by replacing new with emplacement new in many places. gcc/d/ChangeLog: 2019-01-21 Iain Buclaw <ibuclaw@gdcproject.org> * d-frontend.cc (Compiler::paintAsType): Update for new signature. From-SVN: r268124
Iain Buclaw committed -
PR target/88938 * config/i386/i386.c (ix86_expand_builtin) [case IX86_BUILTIN_BEXTRI32, case IX86_BUILTIN_BEXTRI64]: Sanitize operands. testsuite/ChangeLog: PR target/88938 * gcc.target/i386/pr88938.c: New test. From-SVN: r268123
Uros Bizjak committed -
PR sanitizer/88901 * typeck.c (cp_build_binary_op): Don't instrument SANITIZE_POINTER_COMPARE if processing_template_decl. (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT. * g++.dg/asan/pr88901.C: New test. From-SVN: r268122
Jakub Jelinek committed -
* hash-map-tests.c (test_map_of_strings_to_int): Show how to use string contents as hash_map keys. From-SVN: r268121
Michael Ploujnikov committed -
gcc/testsuite/ChangeLog: * g++.dg/vect/simd-clone-7.cc: Fix assembler scan. --This line, a d those below, will be ignored-- M gcc/testsuite/ChangeLog M gcc/testsuite/g++.dg/vect/simd-clone-7.cc From-SVN: r268120
Tamar Christina committed -
2019-01-21 Iain Buclaw <ibuclaw@gdcproject.org> * Makefile.am (noinst_LTLIBRARIES): Rename libzgcj_convience.la to libz_convenience.la. * Makefile.in: Regenerate. * configure.ac: Remove target_all. * configure: Regenerate. From-SVN: r268119
Iain Buclaw committed -
2019-01-21 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c/88928 * c-warn.c (check_alignment_of_packed_member): Add a boolean parameter for rvalue context. Handle rvalues correctly. Use min_align_of_type instead of TYPE_ALIGN. (check_address_or_pointer_of_packed_member): Handle rvalues coorrectly. Use min_align_of_type instead of TYPE_ALIGN_UNIT. Check for NULL pointer from TYPE_STUB_DECL. testsuite: 2019-01-21 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c/88928 * c-c++-common/Waddress-of-packed-member-1.c: New test case. * gcc.dg/pr88928.c: New test case. From-SVN: r268118
Bernd Edlinger committed -
* gcc.dg/utf-array.c: Allow wchar_t to be printed as {long ,short ,}{unsigned ,}int. From-SVN: r268117
Jakub Jelinek committed -
Philippe Waroquiers noticed a memory leak in gdb, which he tracked down to a bug in splay-tree. splay_tree_remove does not call the `delete_key' function when it removes the old node; but it should. I looked at every splay tree in GCC and there is only one that passes a non-NULL delete function -- the one in lto.c. That file does not call splay_tree_remove. So, I think this is safe to check in. I re-ran the LTO tests to double check. libiberty/ * splay-tree.c (splay_tree_remove): Delete the key if necessary. From-SVN: r268116
Tom Tromey committed -
re PR tree-optimization/88934 (ICE: verify_gimple failed (Error: mismatching comparison operand types)) 2019-01-21 Richard Biener <rguenther@suse.de> PR tree-optimization/88934 * tree-vect-slp.c (vect_mask_constant_operand_p): Always look at the possibly non-constant operand. (vect_get_constant_vectors): Adjust. * gfortran.dg/pr88934.f90: New testcase. From-SVN: r268115
Richard Biener committed -
According to Intel Intrinsics Guide: https://software.intel.com/sites/landingpage/IntrinsicsGuide/ Intel intrinsics should be available by including <immintrin.h>. This patch moves remaining Intel intrinsics head files from <x86intrin.h> to <immintrin.h>. PR target/71659 * config/i386/adxintrin.h: Just check _IMMINTRIN_H_INCLUDED. * config/i386/clflushoptintrin.h: Check _IMMINTRIN_H_INCLUDED instead of _X86INTRIN_H_INCLUDED. * onfig/i386/clwbintrin.h: Likewise. * config/i386/pkuintrin.h: Likewise. * config/i386/prfchwintrin.h: Likewise. * config/i386/rdseedintrin.h: Likewise. * config/i386/wbnoinvdintrin.h: Likewise. * config/i386/xsavecintrin.h: Likewise. * config/i386/xsavesintrin.h: Likewise. * config/i386/fxsrintrin.h: Enable _IMMINTRIN_H_INCLUDED check. * config/i386/xsaveintrin.h: Likewise. * config/i386/xsaveoptintrin.h: Likewise. * config/i386/x86intrin.h: Move "#include" <rdseedintrin.h>, <prfchwintrin.h>, <fxsrintrin.h>, <xsaveintrin.h>, <xsaveoptintrin.h>, <adxintrin.h>, <clwbintrin.h>, <clflushoptintrin.h>, <xsavesintrin.h>, <xsavecintrin.h>, <wbnoinvdintrin.h> and <pkuintrin.h> to ... * config/i386/immintrin.h: Here. From-SVN: r268113
H.J. Lu committed -
re PR ipa/86590 (Codegen is poor when passing std::string by value with _GLIBCXX_EXTERN_TEMPLATE undefined) PR libstdc++/86590 * include/bits/char_traits.h (__constant_string_p, __constant_char_array_p): Use __builtin_is_constant_evaluated if available. From-SVN: r268112
Jakub Jelinek committed -
gcc/testsuite/ChangeLog 2019-02-20 Ulrich Drepper <drepper@redhat.com> Fix after P0600. * g++.dg/init/new39.C: Don't just ignore result of new. libstdc++/ChangeLog 2019-02-20 Ulrich Drepper <drepper@redhat.com> Implement C++20 P0600r1. * include/backward/hash_map: Add nodiscard attribute to empty. * include/backward/hash_set: Likewise. * backward/hashtable.h: Likewise. * include/bits/basic_string.h: Likewise. * include/bits/forward_list.h: Likewise. * include/bits/hashtable.h: Likewise. * include/bits/regex.h: Likewise. * include/bits/stl_deque.h: Likewise. * include/bits/stl_list.h: Likewise. * include/bits/stl_map.h: Likewise. * include/bits/stl_multimap.h: Likewise. * include/bits/stl_multiset.h: Likewise. * include/bits/stl_queue.h: Likewise. * include/bits/stl_set.h: Likewise. * include/bits/stl_stack.h: Likewise. * include/bits/stl_tree.h: Likewise. * include/bits/stl_vector.h: Likewise. * include/bits/unordered_map.h: Likewise. * include/bits/unordered_set.h: Likewise. * include/debug/array: Likewise. * include/experimental/any: Likewise. * include/experimental/bits/fs_path.h: Likewise. * include/experimental/internet: Likewise. * include/experimental/string_view: Likewise. * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Likewise. * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Likewise. * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Likewise. * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp: Likewise. * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise. * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp: Likewise. * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp: Likewise. * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Likewise. * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Likewise. * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise. * include/ext/pb_ds/trie_policy.hpp: Likewise. * include/ext/rope: Likewise. * include/ext/slist: Likewise. * include/ext/vstring.h: Likewise. * include/profile/array: Likewise. * include/std/array: Likewise. * include/tr1/array: Likewise. * include/tr1/hashtable.h: Likewise. * include/tr1/regex: Likewise. * include/tr2/dynamic_bitset: Likewise. * include/bits/alloc_traits.h: Add nodiscard attribute to allocate. * include/experimental/memory_resource: Likewise. * include/ext/alloc_traits.h: Likewise. * include/ext/array_allocator.h: Likewise. * include/ext/bitmap_allocator.h: Likewise. * include/ext/debug_allocator.h: Likewise. * include/ext/extptr_allocator.h: Likewise. * include/ext/mt_allocator.h: Likewise. * include/ext/new_allocator.h: Likewise. * include/ext/pool_allocator.h: Likewise. * include/ext/throw_allocator.h: Likewise. * include/std/scoped_allocator: Likewise. * libsupc++/eh_alloc.cc: Likewise. * include/std/future: Add nodiscard attribute to async. * libsupc++/new: Add nodiscard attribute to new. From-SVN: r268111
Ulrich Drepper committed -
From-SVN: r268110
GCC Administrator committed
-
- 20 Jan, 2019 5 commits
-
-
2019-01-20 Martin Jambor <mjambor@suse.cz> PR ipa/87615 * ipa-prop.h (struct ipa_func_body_info): Replaced field aa_walked with aa_walk_budget. * cgraph.h (ipa_polymorphic_call_context::get_dynamic_type): Add aa_walk_budget_p parameter. * ipa-fnsummary.c (unmodified_parm_1): New parameter fbi. Limit AA walk. Updated all callers. (unmodified_parm): New parameter fbi, pass it to unmodified_parm_1. (eliminated_by_inlining_prob): New parameter fbi, pass it on to unmodified_parm. (will_be_nonconstant_expr_predicate): New parameter fbi, removed parameter info. Extract info from fbi. Pass fbi to recursive calls and to unmodified_parm. (phi_result_unknown_predicate): New parameter fbi, removed parameter info, updated call to will_be_nonconstant_expr_predicate. (param_change_prob): New parameter fbi, limit AA walking. (analyze_function_body): Initialize aa_walk_budget in fbi. Update calls to various above functions. * ipa-polymorphic-call.c (get_dynamic_type): Add aa_walk_budget_p parameter. Use it to limit AA walking. * ipa-prop.c (detect_type_change_from_memory_writes): New parameter fbi, limit AA walk. (detect_type_change): New parameter fbi, pass it on to detect_type_change_from_memory_writes. (detect_type_change_ssa): Likewise. (aa_overwalked): Removed. (parm_preserved_before_stmt_p): Assume fbi is never NULL, stream line accordingly, adjust to the neew AA limiting scheme. (parm_ref_data_preserved_p): Likewise. (ipa_compute_jump_functions_for_edge): Adjust call to get_dynamic_type. (ipa_analyze_call_uses): Likewise. (ipa_analyze_virtual_call_uses): Pass fbi to detect_type_change_ssa. (ipa_analyze_node): Initialize aa_walk_budget. (ipcp_transform_function): Likewise. * tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Update call to get_dynamic_type. From-SVN: r268107
Martin Jambor committed -
Every back-end defines STACK_GROWS_DOWNWARD, the condition should instead be checking whether it was defined as 1 or 0. gcc/d/ChangeLog: 2019-01-20 Iain Buclaw <ibuclaw@gdcproject.org> * d-builtins.cc (d_init_versions): Check value of STACK_GROWS_DOWNWARD. From-SVN: r268106
Iain Buclaw committed -
From-SVN: r268105
Gerald Pfeifer committed -
gcc/d/ChangeLog: 2019-01-20 Iain Buclaw <ibuclaw@gdcproject.org> * d-codegen.cc (identity_compare_p): Return false if seen built-in type with padding. (build_float_identity): Moved here from expr.cc. (lower_struct_comparison): Handle real and complex types. * d-tree.h (build_float_identity): New. * expr.cc (build_float_identity): Move to d-codegen.cc. gcc/testsuite/ChangeLog: 2019-01-20 Iain Buclaw <ibuclaw@gdcproject.org> * gdc.dg/runnable.d: Add more tests for comparing complex types. From-SVN: r268104
Iain Buclaw committed -
gcc/d/ChangeLog: 2019-01-20 Johannes Pfau <johannespfau@gmail.com> * expr.cc (build_float_identity): New function. (ExprVisitor::visit(IdentityExp)): Add support for complex types. gcc/testsuite/ChangeLog: 2019-01-20 Johannes Pfau <johannespfau@gmail.com> * gdc.dg/runnable.d: Add tests for comparing complex types. From-SVN: r268103
Johannes Pfau committed
-