- 13 Sep, 2018 22 commits
-
-
* typeck2.c (digest_init_r): Fix overlength strings. * vtable-class-hierarchy.c (build_key_buffer_arg): Make string literal NUL terminated. From-SVN: r264286
Bernd Edlinger committed -
trans-array.c (gfc_conv_array_initializer): Remove excess precision from overlength string initializers. * trans-array.c (gfc_conv_array_initializer): Remove excess precision from overlength string initializers. From-SVN: r264285
Bernd Edlinger committed -
Reviewed-on: https://go-review.googlesource.com/134228 From-SVN: r264283
Ian Lance Taylor committed -
Unlike the gc runtime, libgo stores traceback information in location structs, which contain strings. Therefore, copying location structs around appears to require write barriers, although in fact write barriers are never important because the strings are never allocated in Go memory. They come from libbacktrace. Some of the generated write barriers come at times when write barriers are not permitted. For example, exitsyscall, marked nowritebarrierrec, calls exitsyscallfast which calls traceGoSysExit which calls traceEvent which calls traceStackID which calls trace.stackTab.put which copies location values into memory allocated by tab.newStack. This write barrier can be invoked when there is no p, causing a crash. This change fixes the problem by ensuring that location values are copied around in the tracing code with no write barriers. This was found by fixing the compiler to fully implement //go:nowritebarrierrec; CL to follow. Reviewed-on: https://go-review.googlesource.com/134226 From-SVN: r264282
Ian Lance Taylor committed -
PR target/86812 * config/visium/visium.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define. From-SVN: r264281
Eric Botcazou committed -
From-SVN: r264278
Eric Botcazou committed -
PR ada/81103 * terminals.c: Do not include termio.h. From-SVN: r264277
Eric Botcazou committed -
To reduce the amount of time spent in write barrier processing (specifically runtime.bulkBarrierPreWrite), add support for building a 'GC roots index', basically a sorted list of all roots, so as to allow more efficient lookups of gcdata structures for globals. The previous implementation worked on the raw (unsorted) roots list itself, which did not scale well. Reviewed-on: https://go-review.googlesource.com/132595 From-SVN: r264276
Ian Lance Taylor committed -
2018-09-13 Matthew Malcomson <matthew.malcomson@arm.com> * MAINTAINERS (Write After Approval): Add self. From-SVN: r264275
Matthew Malcomson committed -
2018-09-13 Sam Tebbs <sam.tebbs@arm.com> * MAINTAINERS (write_after_approval): Add myself. From-SVN: r264274
Sam Tebbs committed -
2018-09-13 Richard Biener <rguenther@suse.de> PR tree-optimization/87263 * tree-ssa-sccvn.c (visit_phi): Revert some earlier changes. (struct unwind_state): Add max_rpo field. (do_rpo_vn): Allow up-to-date loop state to be used when not iterating. Compute max_rpo, the max RPO number a block can be backwards reached from. Re-write non-iterating mode to a RPO ordered worklist approach, separating it from the iterating mode. * gcc.dg/torture/pr87263.c: New testcase. * gcc.dg/torture/ssa-fre-2.c: Likewise. * gcc.dg/torture/ssa-fre-3.c: Likewise. * gcc.dg/torture/ssa-fre-4.c: Likewise. From-SVN: r264273
Richard Biener committed -
The bug https://bugs.llvm.org/show_bug.cgi?id=33222 is now fixed on Clang trunk, so the workaround won't be needed for Clang 8.0 and later. * include/std/variant (variant) [__clang__]: Limit workaround to Clang 7 and older. From-SVN: r264271
Jonathan Wakely committed -
2018-09-13 Vlad Lazar <vlad.lazar@arm.com> * haifa-sched.c (rank_for_schedule): Schedule by INSN_COST. (rfs_decision): New scheduling decision. From-SVN: r264270
Vlad Lazar committed -
2018-09-13 Richard Biener <rguenther@suse.de> PR bootstrap/87134 * tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert. (vn_nary_op_insert_pieces_predicated): Do not write useless valid_dominated_by_p entry outside of the allocated storage. From-SVN: r264268
Richard Biener committed -
2018-09-13 Omar Sandoval <osandov@osandov.com> Tom de Vries <tdevries@suse.de> PR debug/86985 * dwarf2out.c (is_c): New function. (add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays. * gcc.dg/guality/zero-length-array.c: New test. Co-Authored-By: Tom de Vries <tdevries@suse.de> From-SVN: r264267
Omar Sandoval committed -
2018-09-13 Sam Tebbs <sam.tebbs@arm.com> PR target/85628 * config/aarch64/aarch64.md (*aarch64_bfxil): Define. * config/aarch64/constraints.md (Ulc): Define. * config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p): Define. * config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p): New function. * gcc.target/aarch64/combine_bfxil.c: New file. * gcc.target/aarch64/combine_bfxil_2.c: New file. From-SVN: r264264
Sam Tebbs committed -
The patch adds support for the TARGET_COMPUTE_FRAME_LAYOUT hook on AArch64 and removes unneeded frame layout recalculation. 2018-09-13 Vlad Lazar <vlad.lazar@arm.com> * config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define. * config/aarch64/aarch64.c (aarch64_expand_prologue): Remove aarch64_layout_frame call. (aarch64_expand_epilogue): Likewise. (aarch64_initial_elimination_offset): Likewise. (aarch64_get_separate_components): Likewise. (aarch64_use_return_insn_p): Likewise. (aarch64_layout_frame): Remove unneeded check. From-SVN: r264263
Vlad Lazar committed -
* configure.ac: Only append " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to gcc_config_arguments if it was never reconfigured or last reconfigure was with different arguments. * configure: Regenerated. From-SVN: r264262
Jakub Jelinek committed -
PR middle-end/87290 * expr.c (maybe_optimize_pow2p_mod_cmp): New function. (maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1. * gcc.target/i386/pr87290.c: New test. * gcc.c-torture/execute/pr87290.c: New test. Co-Authored-By: Kyrylo Tkachov <kyrylo.tkachov@arm.com> From-SVN: r264261
Jakub Jelinek committed -
PR tree-optimization/87287 * fold-const.c (fold_binary_loc) <case EQ_EXPR>: Move signed modulo X % C == 0 to X % (unsigned) C == 0 optimization to ... * match.pd (X % C == 0): ... here. New optimization. * gcc.dg/tree-ssa/pr87287.c: New test. From-SVN: r264260
Jakub Jelinek committed -
Omit a write barrier for s = s[0:] for a slice s. In this case the pointer is not changing and no write barrier is required. Omit a write barrier for s = append(s, v) in the case where len(s) < cap(s) (and similarly when appending more values). When the slice has enough capacity the pointer is not changing and no write barrier is required. These changes are required to avoid write barriers in the method randomOrder.reset in the runtime package. That method is called from procresize, at a point where we do not want to allocate memory. Otherwise that method can use a write barrier, allocate memory, and break TestReadMemStats. Reviewed-on: https://go-review.googlesource.com/134219 From-SVN: r264259
Ian Lance Taylor committed -
From-SVN: r264258
GCC Administrator committed
-
- 12 Sep, 2018 18 commits
-
-
re PR c++/87093 (is_constructible (__is_constructible() instrinsic) explicitly instantiates conversion member function of source) PR c++/87093 gcc/cp PR c++/87093 * method.c (constructible_expr): We're in an unevaluated context in all cases, not just for class targets. testsuite/ PR c++/87093 * g++.dg/ext/is_constructible2.C: New. From-SVN: r264253
Ville Voutilainen committed -
I broke out the "no viable candidates" case in build_new_method_call_1 into a subroutine, and added special-case handling for when there's a single non-viable candidate where there's an argument conversion error. I turned the error-handling from convert_for_assignment into a subroutine, calling it from this new special-case. This converts: demo.cc: In function 'int test_4(int, const char*, float)': demo.cc:5:44: error: no matching function for call to 's4::member_1(int&, const char*&, float&)' 5 | return s4::member_1 (first, second, third); | ^ demo.cc:1:24: note: candidate: 'static int s4::member_1(int, const char**, float)' 1 | struct s4 { static int member_1 (int one, const char **two, float three); }; | ^~~~~~~~ demo.cc:1:56: note: no known conversion for argument 2 from 'const char*' to 'const char**' 1 | struct s4 { static int member_1 (int one, const char **two, float three); }; | ~~~~~~~~~~~~~^~~ to: demo.cc: In function 'int test_4(int, const char*, float)': demo.cc:5:31: error: cannot convert 'const char*' to 'const char**' 5 | return s4::member_1 (first, second, third); | ^~~~~~ | | | const char* demo.cc:1:56: note: initializing argument 2 of 'static int s4::member_1(int, const char**, float)' 1 | struct s4 { static int member_1 (int one, const char **two, float three); }; | ~~~~~~~~~~~~~^~~ thus highlighting the problematic argument at the callsite (and its type). gcc/cp/ChangeLog: PR c++/85110 * call.c (struct conversion_info): Add "loc" field. (arg_conversion_rejection): Add "loc" param, using it to initialize the new field. (bad_arg_conversion_rejection): Likewise. (explicit_conversion_rejection): Initialize the new field to UNKNOWN_LOCATION. (template_conversion_rejection): Likewise. (add_function_candidate): Pass on the argument location to the new param of arg_conversion_rejection. (add_conv_candidate): Likewise. (build_builtin_candidate): Likewise. (build_user_type_conversion_1): Likewise. (single_z_candidate): New function. (maybe_get_bad_conversion_for_unmatched_call): New function. (complain_about_bad_argument): New function, based on part of convert_for_assignment. (build_new_method_call_1): Split out handling of the "no viable candidates" case into... (complain_about_no_candidates_for_method_call): ...this new function, and use the new functions above to special-case the handling of a single non-viable candidate due to a bad argument. * cp-tree.h (complain_about_bad_argument): New decl. * typeck.c (convert_for_assignment): Split out one error-handling case into complain_about_bad_argument. gcc/testsuite/ChangeLog: PR c++/85110 * g++.dg/cpp0x/explicit4.C: Update expected output to reflect special-casing of diagnostic for a single non-viable candidate due to a bad argument. * g++.dg/diagnostic/param-type-mismatch-2.C: Likewise. Add test coverage for an unmatched overloaded operator. * g++.dg/expr/pmf-1.C: Likewise. * g++.old-deja/g++.bugs/900330_02.C: Likewise. * g++.old-deja/g++.jason/conversion11.C: Likewise. * g++.old-deja/g++.law/arg11.C: Likewise. * g++.old-deja/g++.law/arm9.C: Likewise. * g++.old-deja/g++.robertl/eb131.C: Likewise. From-SVN: r264250
David Malcolm committed -
re PR fortran/87284 (Allocation of class arrays with mold results in "conditional jump or move depends on uninitialised value") 2018-09-12 Paul Thomas <pault@gcc.gnu.org> PR fortran/87284 * trans-expr.c (gfc_trans_class_init_assign): Access to to array elements of the dynamic type requires that the array reference be added to the class expression and not the _data component, unlike scalar expressions. 2018-09-12 Paul Thomas <pault@gcc.gnu.org> PR fortran/87284 * gfortran.dg/allocate_with_mold_2.f90: New test. From-SVN: r264249
Paul Thomas committed -
PR middle-end/82853 * expr.h (maybe_optimize_mod_cmp): Declare. * expr.c (mod_inv): New function. (maybe_optimize_mod_cmp): New function. (do_store_flag): Use it. * cfgexpand.c (expand_gimple_cond): Likewise. * gcc.target/i386/pr82853-1.c: New test. * gcc.target/i386/pr82853-2.c: New test. From-SVN: r264248
Jakub Jelinek committed -
2018-09-09 Cesar Philippidis <cesar@codesourcery.com> Julian Brown <julian@codesourcery.com> PR middle-end/86336 gcc/cp/ * semantics.c (finish_omp_clauses): Treat C++ references the same in OpenACC as OpenMP. gcc/ * gimplify.c (gimplify_scan_omp_clauses): Set target_firstprivatize_array_bases in OpenACC parallel and kernels region contexts. Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from OpenACC data regions. libgomp/ * testsuite/libgomp.oacc-c++/non-scalar-data.C: Remove XFAIL. Co-Authored-By: Julian Brown <julian@codesourcery.com> From-SVN: r264244
Cesar Philippidis committed -
* config/i386/i386.md (sqrt_extend<mode>xf3_i387): Remove. (sqrt<mode>2): Extend operand 1 to XFmode and generate sqrtxf3 insn. From-SVN: r264243
Uros Bizjak committed -
2018-09-12 Richard Biener <rguenther@suse.de> PR tree-optimization/87280 * tree-ssa-sccvn.c (process_bb): Handle the case of executable edge but unreachable target. (do_rpo_vn): For conservatively handling a PHI only mark the backedge executable but not the block reachable. * gcc.dg/torture/pr87280.c: New testcase. From-SVN: r264241
Richard Biener committed -
Fortran STOP and ERROR STOP use a different function to print the "STOP" string and the message string. On GCN this results in out-of-order output, such as "<msg>ERROR STOP ". This patch fixes the problem by making estr_write use the proper Fortran write, not C printf, so both parts are now output the same way. This also ensures that both parts are output to STDERR (not that that means anything on GCN). 2018-09-12 Kwok Cheung Yeung <kcy@codesourcery.com> libgfortran/ * runtime/minimal.c (estr_write): Define in terms of write. From-SVN: r264239
Kwok Cheung Yeung committed -
The minimal libgfortran setup was created for NVPTX, but will also be used by AMD GCN. This patch simply removes an assumption that NVPTX is the only user. Specifically, NVPTX exit is broken, but AMD GCN exit works just fine. 2018-09-12 Andrew Stubbs <ams@codesourcery.com> libgfortran/ * runtime/minimal.c (exit): Only work around nvptx bugs on nvptx. From-SVN: r264238
Andrew Stubbs committed -
re PR tree-optimization/87266 (ICE: Segmentation fault (in useless_type_conversion_p, tree_nop_conversion_p, or is_gimple_reg_type)) 2018-09-12 Richard Biener <rguenther@suse.de> PR tree-optimization/87266 * tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet visited blocks. * gcc.dg/torture/pr87266-1.c: New testcase. * gcc.dg/torture/pr87266-2.c: Likewise. * gcc.dg/torture/pr87266-3.c: Likewise. * gcc.dg/torture/pr87266-4.c: Likewise. From-SVN: r264237
Richard Biener committed -
According to IEEE 754 2008 4.3 'Rounding-direction attributes' the rounding mode of the target format needs to be used. By not setting the value so far we have always used the DFP rounding mode. gcc/ChangeLog: 2018-09-12 Andreas Krebbel <krebbel@linux.ibm.com> * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New constants. ("trunc<BFP:mode><DFP_ALL:mode>2") ("trunc<DFP_ALL:mode><BFP:mode>2") ("extend<BFP:mode><DFP_ALL:mode>2") ("extend<DFP_ALL:mode><BFP:mode>2"): Set proper rounding mode according to the target operand type. gcc/testsuite/ChangeLog: 2018-09-12 Andreas Krebbel <krebbel@linux.ibm.com> * gcc.target/s390/dfp_to_bfp_rounding.c: New test. From-SVN: r264234
Andreas Krebbel committed -
From-SVN: r264233
Martin Liska committed -
PR tree-optimization/86844 * gimple-ssa-store-merging.c (imm_store_chain_info::coalesce_immediate): For overlapping stores, if there are any overlapping stores in between them, make sure they are also coalesced or we give up completely. * gcc.c-torture/execute/pr86844.c: New test. * gcc.dg/store_merging_22.c: New test. * gcc.dg/store_merging_23.c: New test. Co-Authored-By: Andreas Krebbel <krebbel@linux.ibm.com> From-SVN: r264232
Jakub Jelinek committed -
PR middle-end/87248 * fold-const.c (fold_ternary_loc) <case COND_EXPR>: Verify also that BIT_AND_EXPR's second operand is a power of two. Formatting fix. * c-c++-common/torture/pr87248.c: New test. From-SVN: r264230
Jakub Jelinek committed -
This patch adds option -gdescribe-dies. It sets the DW_AT_description attribute of dies that do not get a DW_AT_name attribute, to make it easier to figure out what the die is describing. The option exports the names of artificial variables: ... DIE 0: DW_TAG_variable (0x7fa934dd54b0) + DW_AT_description: "D.1922" DW_AT_type: die -> 0 (0x7fa934dd0d70) DW_AT_artificial: 1 ... which can be traced back to gimple dumps: ... char a[0:D.1922] [value-expr: *a.0]; ... Furthermore, it adds names to external references: ... DIE 0: DW_TAG_subprogram (0x7fa88b9650f0) +DW_AT_description: "main" DW_AT_abstract_origin: die -> label: vla_1.c.6719312a + 29 (0x7fa88b965140) ... and likewise to DW_TAG_call_site_parameter DIEs. Bootstrapped and reg-tested on x86_64. 2018-09-12 Tom de Vries <tdevries@suse.de> * common.opt (gdescribe-dies): Add option. * dwarf2out.c (add_name_and_src_coords_attributes): Add description attribute for artifical and nameless decls. (dwarf2out_register_external_die): Add description attribute to external reference die. (add_desc_attribute): New functions. (gen_subprogram_die): Add description attribute to DW_TAG_call_site_parameter. * tree-pretty-print.c (print_generic_expr_to_str): New function. * tree-pretty-print.h (print_generic_expr_to_str): Declare. * doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and -gno-describe-dies. (@item -gdescribe-dies): Add. From-SVN: r264229
Tom de Vries committed -
* tree-vrp.c (vrp_shift_undefined_p): Remove. (extract_range_from_binary_expr_1: Call wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p. * wide-int-range.h (wide_int_range_shift_undefined_p): Do not depend on sign. From-SVN: r264228
Aldy Hernandez committed -
(alloca_type_and_limit::alloca_type_and_limit): Initialize limit field for ALLOCA_BOUND_*_LARGE. From-SVN: r264227
Aldy Hernandez committed -
From-SVN: r264226
GCC Administrator committed
-