- 20 Mar, 2019 1 commit
-
-
From-SVN: r269817
GCC Administrator committed
-
- 19 Mar, 2019 20 commits
-
-
gcc/c/ChangeLog: PR tree-optimization/89688 * c-decl.c (finish_decl): Call braced_lists_to_string for more kinds of initializers. gcc/c-family/ChangeLog: PR tree-optimization/89688 * c-common.c (braced_list_to_string): Make static. (braced_lists_to_strings): Define new function. * c-common.h (braced_list_to_string): Remove. (braced_lists_to_strings): Declare. gcc/cp/ChangeLog: PR tree-optimization/89688 * typeck2.c (store_init_value): Call braced_lists_to_string for more kinds of initializers. gcc/testsuite/ChangeLog: PR tree-optimization/89688 * gcc.dg/strlenopt-61.c: New test. * g++.dg/warn/Wstringop-overflow-2.C: New test. From-SVN: r269814
Martin Sebor committed -
gcc/ PR target/89411 * config/riscv/riscv.c (riscv_valid_lo_sum_p): New arg x. New locals align, size, offset. Use them to handle a BLKmode reference. Update comment. (riscv_classify_address): Pass info->offset to riscv_valid_lo_sum_p. gcc/testsuite/ PR target/89411 * gcc.target/riscv/losum-overflow.c: New test. From-SVN: r269813
Jim Wilson committed -
PR rtl-optimization/89768 * loop-unroll.c (unroll_loop_constant_iterations): Use gen_int_mode instead of GEN_INT. (unroll_loop_runtime_iterations): Likewise. From-SVN: r269812
Jakub Jelinek committed -
In the C calling convention, on AMD64, and probably a number of other architectures, a 3-word struct argument is passed on stack. This is less efficient than passing in three registers. Further, this may affect the code generation in other part of the program, even if the function is not actually called. Slices are common in Go and append is a common slice operation, which calls growslice in the growing path. To improve the code generation, pass the slice header's three fields as separate values, instead of a struct, to growslice. The drawback is that this makes the runtime implementation slightly diverges from the gc runtime. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/168277 From-SVN: r269811
Ian Lance Taylor committed -
gcc/ChangeLog: * tree-ssa-strlen.c (handle_builtin_stxncpy): Use full_string_p rather than endptr as an indicator of nul-termination. From-SVN: r269809
Martin Sebor committed -
gcc/ChangeLog: PR tree-optimization/89644 * tree-ssa-strlen.c (handle_builtin_stxncpy): Consider unterminated arrays in determining sequence sizes in strncpy and stpncpy. gcc/testsuite/ChangeLog: PR tree-optimization/89644 * gcc.dg/Wstringop-truncation-8.c: New test. From-SVN: r269807
Martin Sebor committed -
2019-03-19 Martin Liska <mliska@suse.cz> PR middle-end/89737 * predict.c (combine_predictions_for_bb): Empty likely_edges and unlikely_edges if there's an edge that belongs to both these sets. 2019-03-19 Martin Liska <mliska@suse.cz> PR middle-end/89737 * gcc.dg/pr89737.c: New test. From-SVN: r269804
Martin Liska committed -
The "classic" PowerPCs (6xx/7xx) are not STRICT_ALIGNMENT, but their floating point units are. This is not normally a problem, the ABIs make everything FP aligned. The RTL patterns converting FP to integer however get a potentially unaligned destination, and we do not want to do an stfiwx on that on such older CPUs. This fixes it. It does not change anything for TARGET_MFCRF targets (POWER4 and later). It also won't change anything for strict-alignment targets, or CPUs without hardware FP of course, or CPUs that do not implement stfiwx (older 4xx/5xx/8xx). It does not change the corresponding fixuns* pattern, because that can not be enabled on any CPU that cannot handle unaligned FP well. PR target/89746 * config/rs6000/rs6000.md (fix_trunc<mode>si2_stfiwx): If we have a non-TARGET_MFCRF target, and the dest is memory but not 32-bit aligned, go via a stack temporary. From-SVN: r269802
Segher Boessenkool committed -
PR target/89378 * config/mips/mips.c (mips_expand_vec_cond_expr): Use gen_lowpart instead of gen_rtx_SUBREG. * config/mips/mips-msa.md (vec_extract<mode><unitmode>): Likewise. From-SVN: r269801
Jakub Jelinek committed -
2019-03-19 Richard Biener <rguenther@suse.de> PR debug/88389 * opts.c (finish_options): Disable -gsplit-dwarf when doing LTO. From-SVN: r269800
Richard Biener committed -
re PR lto/87089 (tree check: expected class 'type', have 'declaration' (namespace_decl) in type_with_linkage_p, at ipa-utils.h) PR lto/87809 PR lto/89335 * tree.c (free_lang_data_in_decl): Do not free context of C++ destrutors. * g++.dg/lto/pr87089_0.C: New testcase. * g++.dg/lto/pr87089_1.C: New testcase. * g++.dg/lto/pr89335_0.C: New testcase. From-SVN: r269799
Jan Hubicka committed -
Since aix/ppc64 has been added to GC toolchain, a mix between new and old files were created in gcc toolchain. This commit corrects this merge for aix/ppc64 and aix/ppc. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/167658 From-SVN: r269797
Ian Lance Taylor committed -
gcc/testsuite/ChangeLog: 2019-03-19 Kelvin Nilsen <kelvin@gcc.gnu.org> PR target/89736 * gcc.target/powerpc/pr87532-mc.c: Modify dejagnu directives to restrict this test to vsx targets. From-SVN: r269796
Kelvin Nilsen committed -
PR target/89506 * config/arm/arm.md (cmpsi2_addneg): Swap the alternatives and use subs for the first alternative except when operands[3] is 1. From-SVN: r269795
Jakub Jelinek committed -
* doc/xml/manual/allocator.xml: Link to table documenting evolution of extension allocators. * doc/xml/manual/evolution.xml: Use angle brackets for header names. Document new headers in 7.2, 8.1 and 9.1 releases. * doc/xml/manual/using.xml: Adjust link target for new_allocator. * doc/html/*: Regenerate. From-SVN: r269794
Jonathan Wakely committed -
PR target/89752 * gimplify.c (gimplify_asm_expr): For output argument with TREE_ADDRESSABLE type, clear allows_reg if it allows memory, otherwise diagnose error. * g++.dg/ext/asm15.C: Check for particular diagnostic wording. * g++.dg/ext/asm16.C: Likewise. * g++.dg/ext/asm17.C: New test. From-SVN: r269793
Jakub Jelinek committed -
PR rtl-optimization/89753 * loop-unroll.c (decide_unroll_constant_iterations): Make guard for explicit unrolling factor even more robust. From-SVN: r269791
Eric Botcazou committed -
PR target/89726 * config/i386/i386.c (ix86_expand_floorceildf_32): In ceil compensation use x2 += 1 instead of x2 -= -1 and when honoring signed zeros, do another copysign after the compensation. * gcc.target/i386/fpprec-1.c (x): Add 6 new constants. (expect_round, expect_rint, expect_floor, expect_ceil, expect_trunc): Add expected results for them. From-SVN: r269790
Jakub Jelinek committed -
PR c/89734 * c-decl.c (grokdeclarator): Call c_build_qualified_type on function return type even if quals_used is 0. Formatting fixes. * gcc.dg/pr89734.c: New test. From-SVN: r269789
Jakub Jelinek committed -
From-SVN: r269788
GCC Administrator committed
-
- 18 Mar, 2019 19 commits
-
-
gcc/ChangeLog: PR tree-optimization/89720 * tree-vrp.c (vrp_prop::check_mem_ref): Treat range with max < min more conservatively, the same as anti-range. gcc/testsuite/ChangeLog: PR tree-optimization/89720 * gcc.dg/Warray-bounds-42.c: New test. From-SVN: r269785
Martin Sebor committed -
From-SVN: r269784
Johannes Pfau committed -
From-SVN: r269783
Joseph Myers committed -
PR c++/89630 * g++.target/i386/pr89630.C: New test. From-SVN: r269781
H.J. Lu committed -
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/167749 From-SVN: r269780
Ian Lance Taylor committed -
2019-03-18 Kito Cheng <kito.cheng@gmail.com> * gcc.target/riscv/arch-1.c: Add quotes around march in dg-error. From-SVN: r269779
Kito Cheng committed -
Even though these two using-declarations have the same effect, they are not the same declaration, and we don't need to work to treat them as the same like we do for typedefs. If we did need to, we would need to handle them specially in iterative_hash_template_arg as well as here. * tree.c (cp_tree_equal): Always return false for USING_DECL. From-SVN: r269777
Jason Merrill committed -
In this testcase we get confused when looking at the sizeof... because the argument pack for 'args' has been wrapped in an ARGUMENT_PACK_SELECT as part of expanding the fold-expression. We handle this situation a bit lower down in tsubst_pack_expansion, but that doesn't help the call to argument_pack_element_is_expansion_p, which happens earlier. * pt.c (argument_pack_element_is_expansion_p): Handle ARGUMENT_PACK_SELECT. From-SVN: r269776
Jason Merrill committed -
My patch for PR 60503 to fix C++11 attribute parsing on lambdas accidentally removed support for GNU attributes. * parser.c (cp_parser_lambda_declarator_opt): Allow GNU attributes. From-SVN: r269775
Jason Merrill committed -
It currently wants to see lvx insns on AIX, and no lvx insns on Linux. What is really wanted is lvx insns when no VSX, and lxv* insns if VSX. This fixes it. * gcc.target/powerpc/altivec-7.c: Look for lxv* if generating VSX instructions, and lvx if not. From-SVN: r269772
Segher Boessenkool committed -
Currently these bswap testcases use global variables, which causes problems with -m32: the memory access is a D-form access, and when combine tries to combine that with the bswap it tries a D-form store with byte reverse. That instruction does not exist, and since combine started with only two insns here it will not try splitting this. This should be improved, but it is not what this test is testing, and the "load" case already uses a pointer, so let's do that for the store case as well. * gcc.target/powerpc/bswap16.c: Use a pointer instead of a global for the "store" test as well. * gcc.target/powerpc/bswap32.c: Ditto. From-SVN: r269771
Segher Boessenkool committed -
For the big stack frame in the test GCC used to say pr18096-1.c:7:6: error: total size of local objects too large but now it says pr18096-1.c:7:6: error: total size of local objects 2147483647 exceeds maximum 2147483392 Let's just allow both in the test. gcc/testsuite/ * gcc.target/powerpc/pr18096-1.c: Allow an error message that says "exceeds" instead of just one that talks about "too large". From-SVN: r269770
Segher Boessenkool committed -
2019-03-18 Thomas Koenig <tkoeng@gcc.gnu.org> PR fortran/68009 * iresolve.c: Include trans.h. (gfc_resolve_fe_runtine_error): Set backend_decl on resolved_sym. From-SVN: r269769
Thomas Koenig committed -
Here we were pushing into the right access context, but we were called from a deferred checking context, so didn't end up doing the checks until after we left the access context. * pt.c (tsubst_default_argument): Don't defer access checks. From-SVN: r269766
Jason Merrill committed -
2019-03-18 Richard Biener <rguenther@suse.de> PR middle-end/88945 * tree-ssanames.c (release_ssa_name_fn): For released SSA names use a TREE_TYPE of error_mark_node to avoid ICEs when dumping basic-blocks that are removed. Remove restoring SSA_NAME_VAR. * tree-outof-ssa.c (eliminate_useless_phis): Remove redundant checking. From-SVN: r269765
Richard Biener committed -
2019-03-18 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-run.c (struct output): Make next_output unsigned. Extend queue to 1024 entries. Add "consumed" field. (gomp_print_output): Remove print_index parameter. Add final parameter. Change limit to unsigned. Use consumed field to implement circular buffer. Detect interrupted print in final pass. Flush output at the end. (run): Update gomp_print_output usage. (main): Initialize kernargs->output_data.consumed. From-SVN: r269764
Andrew Stubbs committed -
This patch fixes a case in which we vectorised something with a fully-predicated loop even after the cost model had rejected it. E.g. the loop in the testcase has the costs: Vector inside of loop cost: 27 Vector prologue cost: 0 Vector epilogue cost: 0 Scalar iteration cost: 7 Scalar outside cost: 6 Vector outside cost: 0 prologue iterations: 0 epilogue iterations: 0 and we can see that the loop executes at most three times, but we decided to vectorise it anyway. (The costs here are equal for three iterations, but the same thing happens even when the vector code is strictly more expensive.) The problem is the handling of "/VF" in: /* Calculate number of iterations required to make the vector version profitable, relative to the loop bodies only. The following condition must hold true: SIC * niters + SOC > VIC * ((niters-PL_ITERS-EP_ITERS)/VF) + VOC where SIC = scalar iteration cost, VIC = vector iteration cost, VOC = vector outside cost, VF = vectorization factor, PL_ITERS = prologue iterations, EP_ITERS= epilogue iterations SOC = scalar outside cost for run time cost model check. */ We treat the "/VF" as truncating, but for fully-predicated loops, it's closer to a ceil division, since fractional iterations are handled by a full iteration with some predicate bits set to false. The easiest fix seemed to be to calculate the minimum number of vector iterations first, then use that to calculate the minimum number of scalar iterations. Calculating the minimum number of vector iterations might make sense for unpredicated loops too, since calculating the scalar niters directly doesn't take into account the fact that the VIC multiple has to be an integer. But the handling of PL_ITERS and EP_ITERS for unpredicated loops is a bit hand-wavy anyway, so maybe vagueness here cancels out vagueness there? Either way, changing this for unpredicated loops would be much too invasive for stage 4, so the patch keeps it specific to fully-predicated loops (i.e. SVE) for now. There's no functional change for other targets. 2019-03-18 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-loop.c (vect_estimate_min_profitable_iters): Fix the calculation of the minimum number of scalar iterations for fully-predicated loops. gcc/testsuite/ * gcc.target/aarch64/sve/cost_model_1.c: New test. From-SVN: r269763
Richard Sandiford committed -
2019-03-18 Martin Jambor <mjambor@suse.cz> PR tree-optimization/89546 * tree-sra.c (propagate_subaccesses_across_link): Requeue new_acc if any propagation to its children took place. testsuite/ * gcc.dg/tree-ssa/pr89546.c: New test. From-SVN: r269761
Martin Jambor committed -
This fixes PR target/89627. The RISC-V ABI document[1] says: For the purposes of this section, "struct" refers to a C struct with its hierarchy flattened, including any array fields. That is, struct { struct { float f[1]; } g[2]; } and struct { float f; float g; } are treated the same. Fields containing empty structs or unions are ignored while flattening, even in C++, unless they have nontrivial copy constructors or destructors. However, this flattening only applies when one of the fields of the flattened structure can be placed into a floating point register, otherwise no flattening occurs. Currently GCC fails to correctly consider that empty C++ structures have a non-zero size when constructing the arguments from a flattened structure, and as a result, trying to pass a C++ structure like this: struct sf { struct {} e; float f; }; Doesn't work correctly, GCC fails to take the offset of 'f' within 'sf' into account and will actually pass the space backing 'e' as the contents of 'f'. This patch fixes this so that 'f' will be passed correctly. A couple of new tests are added to cover this functionality. [1] https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md gcc/ChangeLog: PR target/89627 * config/riscv/riscv.c (riscv_pass_fpr_single): Add offset parameter, and make use of it. (riscv_get_arg_info): Pass offset to riscv_pass_fpr_single. gcc/testsuite/ChangeLog: PR target/89627 * g++.target/riscv/call-with-empty-struct-float.C: New file. * g++.target/riscv/call-with-empty-struct-int.C: New file. * g++.target/riscv/call-with-empty-struct.H: New file. * g++.target/riscv/riscv.exp: New file. From-SVN: r269760
Andrew Burgess committed
-