aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-05-13libgo: build syscall test with -staticIan Lance Taylor3-1/+9
This avoids problems finding libgo.so when running the test as root, which invokes the test as a child process in various limited environments. Fixes PR go/95061 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/233897
2020-05-13libbacktrace: mark test_large parameter unused in ztest.cIan Lance Taylor2-1/+5
libbacktrace/ * ztest.c (test_large): Mark state ATTRIBUTE_UNUSED.
2020-05-13libbacktrace: treat EACCESS like ENOENTIan Lance Taylor2-1/+11
libbacktrace/ PR go/95061 * posix.c (backtrace_open): Treat EACCESS like ENOENT.
2020-05-13testsuite: Fix up tree-ssa/pr94969.c testcase [PR95110]Jakub Jelinek2-1/+6
2020-05-13 Jakub Jelinek <jakub@redhat.com> PR testsuite/95110 * gcc.dg/tree-ssa/pr94969.c: Swap scan-tree-dump-not arguments.
2020-05-13c++: Fix g++.dg/parse/attr4.C test.Marek Polacek2-1/+5
I noticed this test failing in C++11 mode. * g++.dg/parse/attr4.C: Use c++11 in a target selector.
2020-05-13add vectype parameter to add_stmt_cost hookRichard Biener13-61/+95
This adds a vectype parameter to add_stmt_cost which avoids the need to pass down a (wrong) stmt_info just to carry this information. Useful for invariants which do not have a stmt_info associated. 2020-05-13 Richard Biener <rguenther@suse.de> * target.def (add_stmt_cost): Add new vectype parameter. * targhooks.c (default_add_stmt_cost): Adjust. * targhooks.h (default_add_stmt_cost): Likewise. * config/aarch64/aarch64.c (aarch64_add_stmt_cost): Take new vectype parameter. * config/arm/arm.c (arm_add_stmt_cost): Likewise. * config/i386/i386.c (ix86_add_stmt_cost): Likewise. * config/rs6000/rs6000.c (rs6000_add_stmt_cost): Likewise. * tree-vectorizer.h (stmt_info_for_cost::vectype): Add. (dump_stmt_cost): Add new vectype parameter. (add_stmt_cost): Likewise. (record_stmt_cost): Likewise. (record_stmt_cost): Add overload with old signature. * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Adjust. (vect_get_known_peeling_cost): Likewise. (vect_estimate_min_profitable_iters): Likewise. * tree-vectorizer.c (dump_stmt_cost): Add new vectype parameter. * tree-vect-stmts.c (record_stmt_cost): Likewise. (vect_prologue_cost_for_slp_op): Remove stmt_vec_info parameter and pass down correct vectype and NULL stmt_info. (vect_model_simple_cost): Adjust. (vect_model_store_cost): Likewise.
2020-05-13Fortran : ICE in gfc_conv_array_constructor_expr PR93497Mark Eggleston8-6/+35
Invalid expressions, such as those involving array constructors, used for the length of character types will cause an ICE. 2020-05-13 Steven G. Kargl <kargl@gcc.gnu.org> gcc/fortran/ PR fortran/93497 * decl.c (char_len_param_value): Check whether character length expression is of type EXPR_OP and if so simplify it. * resolve.c (resolve_charlen): Reject length if it has a rank. 2020-05-13 Mark Eggleston <markeggleston@gcc.gnu.org> gcc/testsuite/ PR fortran/93497 * gfortran.dg/pr88025.f90: Change in wording of error. * gfortran.dg/pr93497.f90: New test. * gfortran.dg/pr93714_1.f90: Change in wording of errors. * gfortran.dg/pr93714_2.f90: Change in wording of errors.
2020-05-13c++: Add testcase for already-fixed PR [PR70642]Patrick Palka2-0/+28
We correctly reject the testcase in this PR ever since commit r9-7046. gcc/testsuite/ChangeLog: PR c++/70642 * g++.dg/cpp0x/alias-decl-70.C: New test.
2020-05-13Remove SLP_INSTANCE_GROUP_SIZERichard Biener5-23/+49
This removes the SLP_INSTANCE_GROUP_SIZE member since the number of lanes throughout a SLP subgraph is not necessarily constant. 2020-05-13 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (SLP_INSTANCE_GROUP_SIZE): Remove. (_slp_instance::group_size): Likewise. * tree-vect-loop.c (vectorizable_reduction): The group size is the number of lanes in the node. * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Likewise. (vect_analyze_slp_instance): Do not set SLP_INSTANCE_GROUP_SIZE, verify it matches the instance trees number of lanes. (vect_slp_analyze_node_operations_1): Use the numer of lanes in the node as group size. (vect_bb_vectorization_profitable_p): Use the instance root number of lanes for the size of life. (vect_schedule_slp_instance): Use the number of lanes as group_size. * tree-vect-stmts.c (vectorizable_load): Remove SLP instance parameter. Use the number of lanes of the load for the group size in the gap adjustment code. (vect_analyze_stmt): Adjust. (vect_transform_stmt): Likewise.
2020-05-13contrib/vimrc: Reduce textwidth for commit messagesPatrick Palka2-1/+9
* vimrc: Reduce textwidth to 72 for Git commit messages.
2020-05-13Add default revisions argument for git_check_commit.py.Martin Liska2-3/+8
* gcc-changelog/git_check_commit.py: Add default argument HEAD for revisions and improve error message output.
2020-05-13Restore print_output syntax in git_commit.py.Martin Liska2-2/+6
* gcc-changelog/git_commit.py: Restore print_output syntax in git_commit.py.
2020-05-13Add gcc-changelog related scripts.Martin Liska6-0/+850
* gcc-changelog/git_check_commit.py: New file. * gcc-changelog/git_commit.py: New file. * gcc-changelog/git_email.py: New file. * gcc-changelog/git_repository.py: New file. * gcc-changelog/git_update_version.py: New file.
2020-05-13Fix -fcompare-debug issue in purge_dead_edges [PR95080]Jakub Jelinek4-1/+49
The following testcase fails with -fcompare-debug, the bug used to be latent since introduction of -fcompare-debug. The loop at the start of purge_dead_edges behaves differently between -g0 and -g - if the last insn is a DEBUG_INSN, then it skips not just DEBUG_INSNs but also NOTEs until it finds some other real insn (or bb head), while with -g0 it will not skip any NOTEs, so if we have real_insn note debug_insn // not present with -g0 then with -g it might remove useless REG_EH_REGION from real_insn, while with -g0 it will not. Yet another option would be not skipping NOTE_P in the loop; I couldn't find in history rationale for why it is done. 2020-05-13 Jakub Jelinek <jakub@redhat.com> PR debug/95080 * cfgrtl.c (purge_dead_edges): Skip over debug and note insns even if the last insn is a note. * g++.dg/opt/pr95080.C: New test.
2020-05-13Fold single imm use of a FMA if it is a negation [PR95060]Jakub Jelinek28-144/+226
match.pd already has simplifications for negation of a FMA (FMS, FNMA, FNMS) call if it is single use, but when the widening_mul pass discovers FMAs, nothing folds the statements anymore. So, the following patch adjusts the widening_mul pass to handle that. I had to adjust quite a lot of tests, because they have in them nested FMAs (one FMA feeding another one) and the patch results in some (equivalent) changes in the chosen instructions, previously the negation of one FMA's result would result in the dependent FMA being adjusted for the negation, but now instead the first FMA is adjusted. 2020-05-13 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/95060 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Fold a NEGATE_EXPR if it is the single use of the FMA internal builtin. * gcc.target/i386/avx512f-pr95060.c: New test. * gcc.target/i386/fma_double_1.c: Adjust expected insn counts. * gcc.target/i386/fma_double_2.c: Likewise. * gcc.target/i386/fma_double_3.c: Likewise. * gcc.target/i386/fma_double_4.c: Likewise. * gcc.target/i386/fma_double_5.c: Likewise. * gcc.target/i386/fma_double_6.c: Likewise. * gcc.target/i386/fma_float_1.c: Likewise. * gcc.target/i386/fma_float_2.c: Likewise. * gcc.target/i386/fma_float_3.c: Likewise. * gcc.target/i386/fma_float_4.c: Likewise. * gcc.target/i386/fma_float_5.c: Likewise. * gcc.target/i386/fma_float_6.c: Likewise. * gcc.target/i386/l_fma_double_1.c: Likewise. * gcc.target/i386/l_fma_double_2.c: Likewise. * gcc.target/i386/l_fma_double_3.c: Likewise. * gcc.target/i386/l_fma_double_4.c: Likewise. * gcc.target/i386/l_fma_double_5.c: Likewise. * gcc.target/i386/l_fma_double_6.c: Likewise. * gcc.target/i386/l_fma_float_1.c: Likewise. * gcc.target/i386/l_fma_float_2.c: Likewise. * gcc.target/i386/l_fma_float_3.c: Likewise. * gcc.target/i386/l_fma_float_4.c: Likewise. * gcc.target/i386/l_fma_float_5.c: Likewise. * gcc.target/i386/l_fma_float_6.c: Likewise.
2020-05-13[Fortran] OpenMP - permit lastprivate in distribute + SIMD fixes (PR94690)Tobias Burnus11-15/+479
gcc/fortran/ 2020-05-13 Tobias Burnus <tobias@codesourcery.com> PR fortran/94690 * openmp.c (OMP_DISTRIBUTE_CLAUSES): Add OMP_CLAUSE_LASTPRIVATE. (gfc_resolve_do_iterator): Skip the private handling for SIMD as that is handled by ME code. * trans-openmp.c (gfc_trans_omp_do): Don't add private/lastprivate for dovar_found == 0, unless !simple. libgomp/ 2020-05-13 Tobias Burnus <tobias@codesourcery.com> PR fortran/94690 * testsuite/libgomp.fortran/pr66199-3.f90: New. * testsuite/libgomp.fortran/pr66199-4.f90: New. * testsuite/libgomp.fortran/pr66199-5.f90: New. * testsuite/libgomp.fortran/pr66199-6.f90: New. * testsuite/libgomp.fortran/pr66199-7.f90: New. * testsuite/libgomp.fortran/pr66199-8.f90: New. * testsuite/libgomp.fortran/pr66199-9.f90: New.
2020-05-13Simplify test-case options.Martin Liska2-1/+7
PR sanitizer/95051 * gcc.dg/asan/pr95051.c: Simplify options as -fsanitize=address and -O2 were enough to trigger the original ICE.
2020-05-13x86-vxworks malloc aligns to 8 bytes like solarisAlexandre Oliva3-5/+15
Vxworks 7's malloc, like Solaris', only ensures 8-byte alignment of returned pointers on 32-bit x86, though GCC's stddef.h defines max_align_t with 16-byte alignment for __float128. This patch enables on x86-vxworks the same memory_resource workaround used for x86-solaris. The testsuite also had a workaround, defining BAD_MAX_ALIGN_T and xfailing the test; extend those to x86-vxworks as well, and remove the check for char-aligned requested allocation to be aligned like max_align_t. With that change, the test passes on x86-vxworks; I'm guessing that's the same reason for the test not to pass on x86-solaris (and on x86_64-solaris -m32), so with the fix, I'm tentatively removing the xfail. for libstdc++-v3/ChangeLog PR libstdc++/77691 * include/experimental/memory_resource (__resource_adaptor_imp::do_allocate): Handle max_align_t on x86-vxworks as on x86-solaris. (__resource_adaptor_imp::do_deallocate): Likewise. * testsuite/experimental/memory_resource/new_delete_resource.cc: Drop xfail. (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris. (test03): Drop max-align test for char-aligned alloc.
2020-05-13[PR 95013] Fix gcc.dg/unclosed-init.cChristophe Lyon2-1/+6
2020-05-13 Christophe Lyon <christophe.lyon@linaro.org> PR preprocessor/95013 * gcc.dg/unclosed-init.c: Add missing comment in dg-error.
2020-05-13Add missing unit dependence vector in data dependence analysisBin Cheng5-6/+51
Current data dependence analysis misses unit distant vector if DRs in DDR have the same invariant access functions. This adds the vector as the constant access function case. 2020-05-13 Bin Cheng <bin.cheng@linux.alibaba.com> PR tree-optimization/94969 gcc/ * tree-data-dependence.c (constant_access_functions): Rename to... (invariant_access_functions): ...this. Add parameter. Check for invariant access function, rather than constant. (build_classic_dist_vector): Call above function. * tree-loop-distribution.c (pg_add_dependence_edges): Add comment. gcc/testsuite/ * gcc.dg/tree-ssa/pr94969.c: New test.
2020-05-13Document more x86 operand modifier.liuhongt3-2/+102
Documents operand modifiers which are available in asm stmt but missing in document. | Modifier | Description | Available in asm stmt | Existed in documentation | | --- | --- | ------- | ----- | | L,W,B,Q,S,T | print the opcode suffix for specified size of operand. | Available | Not | | C | print opcode suffix for set/cmov insn. | Not | - | | c | like C, but print reversed condition | Not | - | | F,f | likewise, but for floating-point. | Not | - | | O | if HAVE_AS_IX86_CMOV_SUN_SYNTAX, expand to "w.", "l." or "q.", otherwise nothing | Not | - | | R | print embedded rounding and sae. | Available | Not | | r | print only sae. | Available | Not | | z | print the opcode suffix for the size of the current operand. | Available | Existed | | Z | likewise, with special suffixes for x87 instructions. | Availble | Not | | * | print a star (in certain assembler syntax) | Not | - | | A | print an absolute memory reference. | Available | Existed | | E | print address with DImode register names if TARGET_64BIT. | Available | Existed | | w | print the operand as if it's a "word" (HImode) even if it isn't. | Available | Existed | | s | print a shift double count, followed by the assemblers argument delimiter. | Available | Not | | b | print the QImode name of the register for the indicated operand %b0 would print %al if operands[0] is reg 0. | Available | Existed | | w | likewise, print the HImode name of the register. | Available | Existed | | k | likewise, print the SImode name of the register. | Available | Existed | | q | likewise, print the DImode name of the register. | Available | Existed | | x | likewise, print the V4SFmode name of the register. | Available | Not | | t | likewise, print the V8SFmode name of the register. | Available | Not | | g | likewise, print the V16SFmode name of the register. | Avaliable | Not | | h | print the QImode name for a "high" register, either ah, bh, ch or dh. | Available | Existed | | y | print "st(0)" instead of "st" as a register. | Available | Not | | d | print duplicated register operand for AVX instruction. | Available | Not | | D | print condition for SSE cmp instruction. | Not | - | | P | if PIC, print an @PLT suffix. | Available | Existed | | p | print raw symbol name. | Available | Existed | | X | don't print any sort of PIC '@' suffix for a symbol. | Not | - | | & | print some in-use local-dynamic symbol name. | Not | - | | H | print a memory address offset by 8; used for sse high-parts | Available | Existed | | Y | print condition for XOP pcom* instruction. | Not | - | | V | print naked full integer register name without %. | Available | Existed | | + | print a branch hint as 'cs' or 'ds' prefix | Not | - | | ; | print a semicolon (after prefixes due to bug in older gas). | Not | - | | ~ | print "i" if TARGET_AVX2, "f" otherwise. | Not | - | | ^ | print addr32 prefix if TARGET_64BIT and Pmode != word_mode | Not | - | | M | print addr32 prefix for TARGET_X32 with VSIB address. | Not | - | | ! | print NOTRACK prefix for jxx/call/ret instructions if required. | Not | - | | N | print maskz if it's constant 0 operand. | Available | Not | | I | print comparision predicate operand for sse cmp condition. | Not | - | gcc/ChangeLog PR target/94118 * doc/extend.texi (x86Operandmodifiers): Document more x86 operand modifier. * gcc/config/i386/i386.c: Add comment for operand modifier N and I. Modified-by: liuhongt <hongtao.liu@intel.com>
2020-05-12Refactor tree-vrp.cGiuliano Belinassi2-111/+220
Refactor tree-vrp.c to eliminate all global variables except 'x_vrp_values', which will require that 'thread_outgoing_edges' to accept an extra argument and pass it to the 'simplify' callback. It also removes every access to 'cfun', retrieving the function being compiled from the pass engine. gcc/ChangeLog 2020-05-12 Giuliano Belinassi <giuliano.belinassi@usp.br> * tree-vrp.c (class vrp_insert): New. (insert_range_assertions): Move to class vrp_insert. (dump_all_asserts): Same as above. (dump_asserts_for): Same as above. (live): Same as above. (need_assert_for): Same as above. (live_on_edge): Same as above. (finish_register_edge_assert_for): Same as above. (find_switch_asserts): Same as above. (find_assert_locations): Same as above. (find_assert_locations_1): Same as above. (find_conditional_asserts): Same as above. (process_assert_insertions): Same as above. (register_new_assert_for): Same as above. (vrp_prop): New variable fun. (vrp_initialize): New parameter. (identify_jump_threads): Same as above. (execute_vrp): Same as above.
2020-05-13Daily bump.GCC Administrator1-1/+1
2020-05-12RISC-V: Make unique SECCAT_SRODATA names start with .srodata (not .sdata2)Keith Packard2-0/+45
default_unique_section uses ".sdata2" as a prefix for SECCAT_SRODATA unique sections, but RISC-V uses ".srodata" instead. Override the TARGET_ASM_UNIQUE_SECTION function to catch this case, allowing the default to be used for all other sections. Signed-off-by: Keith Packard <keithp@keithp.com> gcc/ * config/riscv/riscv.c (riscv_unique_section): New. (TARGET_ASM_UNIQUE_SECTION): New.
2020-05-12RISC-V: Add shorten_memrefs pass.Craig Blackmore24-6/+709
gcc/ * config.gcc: Add riscv-shorten-memrefs.o to extra_objs for riscv. * config/riscv/riscv-passes.def: New file. * config/riscv/riscv-protos.h (make_pass_shorten_memrefs): Declare. * config/riscv/riscv-shorten-memrefs.c: New file. * config/riscv/riscv.c (tree-pass.h): New include. (riscv_compressed_reg_p): New Function (riscv_compressed_lw_offset_p): Likewise. (riscv_compressed_lw_address_p): Likewise. (riscv_shorten_lw_offset): Likewise. (riscv_legitimize_address): Attempt to convert base + large_offset to compressible new_base + small_offset. (riscv_address_cost): Make anticipated compressed load/stores cheaper for code size than uncompressed load/stores. (riscv_register_priority): Move compressed register check to riscv_compressed_reg_p. * config/riscv/riscv.h (C_S_BITS): Define. (CSW_MAX_OFFSET): Define. * config/riscv/riscv.opt (mshorten-memefs): New option. * config/riscv/t-riscv (riscv-shorten-memrefs.o): New rule. (PASSES_EXTRA): Add riscv-passes.def. * doc/invoke.texi: Document -mshorten-memrefs. * config/riscv/riscv.c (riscv_new_address_profitable_p): New function. (TARGET_NEW_ADDRESS_PROFITABLE_P): Define. * doc/tm.texi: Regenerate. * doc/tm.texi.in (TARGET_NEW_ADDRESS_PROFITABLE_P): New hook. * sched-deps.c (attempt_change): Use old address if it is cheaper than new address. * target.def (new_address_profitable_p): New hook. * targhooks.c (default_new_address_profitable_p): New function. * targhooks.h (default_new_address_profitable_p): Declare. gcc/testsuite/ * gcc.target/riscv/shorten-memrefs-1.c: New test. * gcc.target/riscv/shorten-memrefs-2.c: New test. * gcc.target/riscv/shorten-memrefs-3.c: New test. * gcc.target/riscv/shorten-memrefs-4.c: New test. * gcc.target/riscv/shorten-memrefs-5.c: New test. * gcc.target/riscv/shorten-memrefs-6.c: New test. * gcc.target/riscv/shorten-memrefs-7.c: New test.
2020-05-12Suppress warning for Interfaces.C with -fdump-ada-specEric Botcazou2-3/+10
The C/C++ bindings generated by means of -fdump-ada-spec always contain with and use clauses for Interfaces.C, but they can be unused in some cases so make sure to avoid warning about that. * c-ada-spec.c (dump_ads): Output pragma Warnings ("U"); on entry.
2020-05-12preprocessor: EOF location is at end of file [PR95013]Nathan Sidwell58-64/+168
My recent C++ parser change to pay attention to EOF location uncovered a separate bug. The preprocesor's EOF logic would set the EOF location to be the beginning of the last line of text in the file -- not the 'line' after that, which contains no characters. Mostly. This fixes things so that when we attempt to read the last line of the main file, we don't pop the buffer until the tokenizer has a chance to create an EOF token with the correct location information. It is then responsible for popping the buffer. As it happens, raw string literal tokenizing contained a bug -- it would increment the line number prematurely, because it cached buffer->cur in a local variable, but checked buffer->cur before updating it to figure out if it was at end of file. We fix up that too. The EOF token intentionally doesn't have a column number -- it's not a position on a line, it's a non-existant line. The testsuite churn is just correcting the EOF location diagnostics. libcpp/ PR preprocessor/95013 * lex.c (lex_raw_string): Process line notes before incrementing. Correct incrementing condition. Adjust for new _cpp_get_fresh_line EOF behaviour. (_cpp_get_fresh_line): Do not pop buffer at EOF, increment line instead. (_cpp_lex_direct): Adjust for new _cpp_get_fresh_line behaviour. (cpp_directive_only_process): Assert we got a fresh line. * traditional.c (_cpp_read_logical_line_trad): Adjust for new _cpp_get_fresh_line behaviour. gcc/testsuite/ * c-c++-common/goacc/pr79428-1.c: Adjust EOF diagnostic location. * c-c++-common/gomp/pr79428-2.c: Likewise. * g++.dg/cpp0x/decltype63.C: Likewise. * g++.dg/cpp0x/gen-attrs-64.C: Likewise. * g++.dg/cpp0x/pr68726.C: Likewise. * g++.dg/cpp0x/pr78341.C: Likewise. * g++.dg/cpp1y/pr65202.C: Likewise. * g++.dg/cpp1y/pr65340.C: Likewise. * g++.dg/cpp1y/pr68578.C: Likewise. * g++.dg/cpp1z/class-deduction44.C: Likewise. * g++.dg/diagnostic/unclosed-extern-c.C: Likewise. * g++.dg/diagnostic/unclosed-function.C: Likewise. * g++.dg/diagnostic/unclosed-namespace.C: Likewise. * g++.dg/diagnostic/unclosed-struct.C: Likewise. * g++.dg/ext/pr84598.C: Likewise. * g++.dg/other/switch4.C: Likewise. * g++.dg/parse/attr4.C: Likewise. * g++.dg/parse/cond4.C: Likewise. * g++.dg/parse/crash10.C: Likewise. * g++.dg/parse/crash18.C: Likewise. * g++.dg/parse/crash27.C: Likewise. * g++.dg/parse/crash34.C: Likewise. * g++.dg/parse/crash35.C: Likewise. * g++.dg/parse/crash52.C: Likewise. * g++.dg/parse/crash59.C: Likewise. * g++.dg/parse/crash61.C: Likewise. * g++.dg/parse/crash67.C: Likewise. * g++.dg/parse/error14.C: Likewise. * g++.dg/parse/error56.C: Likewise. * g++.dg/parse/invalid1.C: Likewise. * g++.dg/parse/parameter-declaration-1.C: Likewise. * g++.dg/parse/parser-pr28152-2.C: Likewise. * g++.dg/parse/parser-pr28152.C: Likewise. * g++.dg/parse/pr68722.C: Likewise. * g++.dg/pr46852.C: Likewise. * g++.dg/pr46868.C: Likewise. * g++.dg/template/crash115.C: Likewise. * g++.dg/template/crash43.C: Likewise. * g++.dg/template/crash90.C: Likewise. * g++.dg/template/error-recovery1.C: Likewise. * g++.dg/template/error57.C: Likewise. * g++.old-deja/g++.other/crash31.C: Likewise. * gcc.dg/empty-source-2.c: Likewise. * gcc.dg/empty-source-3.c: Likewise. * gcc.dg/noncompile/pr30552-3.c: Likewise. * gcc.dg/noncompile/pr35447-1.c: Likewise. * gcc.dg/pr20245-1.c: Likewise. * gcc.dg/pr28419.c: Likewise. * gcc.dg/rtl/truncated-rtl-file.c: Likewise. * gcc.dg/unclosed-init.c: Likewise. * obj-c++.dg/property/property-neg-6.mm: Likewise. * obj-c++.dg/syntax-error-10.mm: Likewise. * obj-c++.dg/syntax-error-8.mm: Likewise. * obj-c++.dg/syntax-error-9.mm: Likewise.
2020-05-12Be prepared for more aggregates in gigiEric Botcazou5-7/+34
This makes sure that gigi is prepared to handle more aggregates in the special memset code path. * sem_aggr.ads (Is_Single_Aggregate): New function. * sem_aggr.adb (Is_Others_Aggregate): Use local variable. (Is_Single_Aggregate): New function to recognize an aggregate with a single association containing a single choice. * fe.h (Is_Others_Aggregate): Delete. (Is_Single_Aggregate): New declaration. * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Call Is_Single_Aggregate instead of Is_Others_Aggregate.
2020-05-12c++: Function found via ADL when it should not [PR95074]Marek Polacek4-10/+73
I noticed that we don't implement [basic.lookup.argdep]/3: quite correctly; it says "If X (the lookup set produced by unqualified lookup) contains -- a block-scope function declaration that is not a using-declaration [...] then Y (the lookup set produced by ADL) is empty." but we were still performing ADL in fn1 in the attached test. The problem was that we were only looking at the first function in the overload set which in this case happened to be a using-declaration, and those don't suppress ADL. We have to look through the whole set to find out if unqualified lookup found a block-scope function declaration, or a member function declaration. PR c++/95074 * parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: When looking for a block-scope function declaration, look through the whole set, not just the first function in the overload set. * g++.dg/lookup/koenig15.C: New test.
2020-05-12testsuite: Fix up gcc.dg/asan/pr95051.c testcase [PR95051]Jakub Jelinek2-1/+6
asan.exp adds -fsanitize=address which is incompatible with -fsanitize=kernel-address, so we need to disable it first. 2020-05-12 Jakub Jelinek <jakub@redhat.com> PR sanitizer/95051 * gcc.dg/asan/pr95051.c: Add -fno-sanitize=all to dg-options.
2020-05-12Fix throw specifiers on interface.Nathan Sidwell3-17/+38
I discovered that libitm: (a) declares __cxa_allocate_exception and friends directly, (b) doesn't mark them as 'throw()' (c) doesn't mark the replacment fns _ITM_$foo as nothrow either We happen to get away with it because of code in the compiler that, although it checks the parameter types, doesn't check the exception specification. (One reason being they used to not be part of the language's type system, but now they are.) I suspect this can lead us to generate pessimal code later, if we've seen one of these decls earlier. Anyway, with modules it becomes trickier[*], so I'm trying to clean it up and not be a problem. I see Jakub fixed part of the problem (https://gcc.gnu.org/pipermail/gcc-patches/2018-December/513302.html) AFAICT, he did fix libitm's decls, but left the lax parm-type checking in the compiler. libitm.h is not very informative about specification: in version 1 of http://www.intel.com/some/path/here.pdf. */ Anyway, it was too fiddly to have libitm pick up the declarations from libsupc++. Besides it makes them weak declarations, and then provides definitions for non-elf systems. So this patch adds the expected 'throw()' * libitm/libitm.h (_ITM_NOTHROW): Define. (_ITM_cxa_allocate_exception, _ITM_cxa_free_exception) (_ITM_cxa_begin_catch): Use it. * eh_cpp.cc: Add throw() to __cxa_allocate_exception, __cxa_free_exception, __cxa_begin_catch, __cxa_tm_cleanup, __cxa_get_globals. (_ITM_cxa_allocate_exception, _ITM_cxa_free_exception) (_ITM_cxa_begin_catch): Likewise.
2020-05-12Enable CET in cross compiler if possibleH.J. Lu6-14/+48
Don't perform CET run-time check for host when cross compiling. Instead, enable CET in cross compiler if possible so that it will run on both CET and non-CET hosts. config/ PR bootstrap/94998 * cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if possible. libiberty/ PR bootstrap/94998 * configure: Regenerated. lto-plugin/ PR bootstrap/94998 * configure: Regenerated.
2020-05-12i386: Add V2SFmode copysign, xorsign and signbit expanders [PR95046]Uros Bizjak4-2/+94
gcc/ChangeLog: PR target/95046 * config/i386/mmx.md (copysignv2sf3): New expander. (xorsignv2sf3): Ditto. (signbitv2sf3): Ditto. testsuite/ChangeLog: PR target/95046 * gcc.target/i386/pr95046-4.c: New test.
2020-05-12i386: Add V2SFmode FMA insn patterns [PR95046]Uros Bizjak4-0/+125
gcc/ChangeLog: PR target/95046 * config/i386/mmx.md (fmav2sf4): New insn pattern. (fmsv2sf4): Ditto. (fnmav2sf4): Ditto. (fnmsv2sf4): Ditto. testsuite/ChangeLog: PR target/95046 * gcc.target/i386/pr95046-3.c: New test.
2020-05-12c++: Add abbreviated fn template test for [PR78752]Patrick Palka2-0/+26
This adds an abbreviated function template version of the testcase in PR78752, which seems to already be fixed. gcc/testsuite/ChangeLog: PR c++/78752 * g++.dg/cpp2a/concepts-pr78752-2.C: New test.
2020-05-12zlib: Add --enable-cet to configureH.J. Lu6-6/+113
When --enable-cet is used to configure GCC, enable Intel CET in target zlib. * Makefile.am (AM_CFLAGS): New. * configure.ac (CET_FLAGS): Add GCC_CET_FLAGS and AC_SUBST. * Makefile.in: Regenerated. * aclocal.m4: Likewise. * configure.ac: Likewise.
2020-05-12libbacktrace: Enable Intel CET on Intel CET enabled host for jitH.J. Lu5-4/+201
Since on Intel CET enabled host, dlopen in Intel CET enabled applications fails on shared libraries which aren't Intel CET enabled, compile with -fcf-protection on Intel CET enabled host when jit is enabled to enable Intel CET on libgccjit. * Makefile.am (AM_CFLAGS): Add $(CET_HOST_FLAGS). * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and AC_SUBST(CET_HOST_FLAGS). Clear CET_HOST_FLAGS if jit isn't enabled. * Makefile.in: Regenerated. * configure: Likewise.
2020-05-12libdecnumber: Enable Intel CET on Intel CET enabled host for jitH.J. Lu5-1/+180
Since on Intel CET enabled host, dlopen in Intel CET enabled applications fails on shared libraries which aren't Intel CET enabled, compile with -fcf-protection on Intel CET enabled host when jit is enabled to enable Intel CET on libgccjit. * Makefile.in (CET_HOST_FLAGS): New. (COMPILER): Add $(CET_HOST_FLAGS). * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and AC_SUBST(CET_HOST_FLAGS). Clear CET_HOST_FLAGS if jit isn't enabled. * aclocal.m4: Regenerated. * configure: Likewise.
2020-05-12libcpp: Enable Intel CET on Intel CET enabled host for jitH.J. Lu5-2/+180
Since on Intel CET enabled host, dlopen in Intel CET enabled applications fails on shared libraries which aren't Intel CET enabled, compile with -fcf-protection on Intel CET enabled host when jit is enabled to enable Intel CET on libgccjit. * Makefile.in (CET_HOST_FLAGS): New. (COMPILER): Add $(CET_HOST_FLAGS). * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and AC_SUBST(CET_HOST_FLAGS). Clear CET_HOST_FLAGS if jit isn't enabled. * aclocal.m4: Regenerated. * configure: Likewise.
2020-05-12gcc: Enable Intel CET on Intel CET enabled host for jitH.J. Lu5-2/+207
Since on Intel CET enabled host, dlopen in Intel CET enabled applications fails on shared libraries which aren't Intel CET enabled, compile with -fcf-protection on Intel CET enabled host when jit is enabled to enable Intel CET on libgccjit. * Makefile.in (CET_HOST_FLAGS): New. (COMPILER): Add $(CET_HOST_FLAGS). * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and AC_SUBST(CET_HOST_FLAGS). Clear CET_HOST_FLAGS if jit isn't enabled. * aclocal.m4: Regenerated. * configure: Likewise.
2020-05-12libcc1: Enable Intel CET on Intel CET enabled hostH.J. Lu6-4/+164
Since on Intel CET enabled host, dlopen in Intel CET enabled applications fails on shared libraries which aren't Intel CET enabled, enable Intel CET in libcc1 on Intel CET enabled host. * Makefile.am (AM_CXXFLAGS): Add $(CET_HOST_FLAGS). * configure.ac: Add GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) and AC_SUBST(CET_HOST_FLAGS). * Makefile.in: Regenerated. * aclocal.m4: Likewise. * configure: Likewise.
2020-05-12i386: Add V2SFmode NEG, ABS and logic insn patterns [PR95046]Uros Bizjak1-0/+12
gcc/ChangeLog: PR target/95046 * config/i386/mmx.md (<code>v2sf2): New insn pattern. (*mmx_<code>v2sf2): New insn_and_split pattern. (*mmx_nabsv2sf2): Ditto. (*mmx_andnotv2sf3): New insn pattern. (*mmx_<code>v2sf3): Ditto. * config/i386/i386.md (absneg_op): New code attribute. * config/i386/i386.c (ix86_build_const_vector): Handle V2SFmode. (ix86_build_signbit_mask): Ditto. testsuite/ChangeLog: PR target/95046 * gcc.target/i386/pr95046-2.c: New test.
2020-05-12i386: Add V2SFmode NEG, ABS and logic insn patterns [PR95046]Uros Bizjak6-7/+121
gcc/ChangeLog: PR target/95046 * config/i386/mmx.md (<code>v2sf2): New insn pattern. (*mmx_<code>v2sf2): New insn_and_split pattern. (*mmx_nabsv2sf2): Ditto. (*mmx_andnotv2sf3): New insn pattern. (*mmx_<code>v2sf3): Ditto. * config/i386/i386.md (absneg_op): New code attribute. * config/i386/i386.c (ix86_build_const_vector): Handle V2SFmode. (ix86_build_signbit_mask): Ditto. testsuite/ChangeLog: PR target/95046 * gcc.target/i386/pr95046-2.c: New test.
2020-05-12remove dead debug-bind resetsRichard Biener2-1/+35
This removes debug-bind resets aka # DEBUG b = NULL when the reset variable is otherwise unused. I've gathered statistics for a single TU, fold-const.ii which at -O2 -g shows 28 ssa "dead debug bind reset" 1 34 einline "dead debug bind reset" 340 54 release_ssa "dead debug bind reset" 176 54 release_ssa "live debug bind reset of dead var" 4 86 inline "dead debug bind reset" 5131 86 inline "live debug bind reset of dead var" 61 241 optimized "dead debug bind reset" 970 241 optimized "live debug bind reset of dead var" 287 where "live debug bind reset of dead var" means the variable is unused but there were debug binds with a value for them and "dead debug bind reset" means the variable is unused and there were only debug bind resets (each reset of the same variable is counted for both counters). This shows A considerable amount of dead stmts removed esp. after IPA inlining. 2020-05-12 Richard Biener <rguenther@suse.de> * tree-ssa-live.c (remove_unused_locals): Remove dead debug bind resets.
2020-05-12middle-end/94988 fix testcase for big-endianRichard Biener1-0/+2
The testcase only works for little-endian, mark it so. 2020-05-12 Richard Biener <rguenther@suse.de> PR middle-end/94988 * gcc.dg/torture/pr94988.c: Disable runtime test for * non-little-endian.
2020-05-12MSP430: Define ASM_OUTPUT_ALIGNED_DECL_LOCALJozef Lawrynowicz6-7/+44
gcc/ChangeLog: 2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com> * config/msp430/msp430-protos.h (msp430_output_aligned_decl_common): Update prototype to include "local" argument. * config/msp430/msp430.c (msp430_output_aligned_decl_common): Add "local" argument. Handle local common decls. * config/msp430/msp430.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Adjust msp430_output_aligned_decl_common call with 0 for "local" argument. (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Define. gcc/testsuite/ChangeLog: 2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com> * gcc.c-torture/execute/noinit-attribute.c: Skip for msp430 in the large memory model.
2020-05-12MSP430: Allow .bss section to be created in region-attribute-misuse testJozef Lawrynowicz2-1/+5
2020-05-12 Jozef Lawrynowicz <jozef.l@mittosystems.com> * gcc.target/msp430/region-attribute-misuse.c: Allow a .bss section to be created.
2020-05-12Fix incorrect scalar storage order handlingEric Botcazou2-5/+18
This fixes an oversight in the new canonicalization code for packable types: it does not take into account the scalar storage order. PR ada/95035 * gcc-interface/utils.c (packable_type_hasher::equal): Also compare the scalar storage order. (hash_packable_type): Also hash the scalar storage order. (hash_pad_type): Likewise.
2020-05-12preserve EDGE_DFS_BACK across split_edgeRichard Biener2-0/+10
This moves EDGE_DFS_BACK to the appropriate edge when the split edge had it set. 2020-05-12 Richard Biener <rguenther@suse.de> * cfghooks.c (split_edge): Preserve EDGE_DFS_BACK if set.
2020-05-12ASAN: clear DECL_NOT_GIMPLE_REG_P.Martin Liska6-0/+77
PR sanitizer/95033 PR sanitizer/95051 * sanopt.c (sanitize_rewrite_addressable_params): Clear DECL_NOT_GIMPLE_REG_P for argument. PR sanitizer/95033 PR sanitizer/95051 * g++.dg/asan/function-argument-4.C: New test. * gcc.dg/asan/pr95033.c: New test. * gcc.dg/asan/pr95051.c: New test.