aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2018-09-30re PR rtl-optimization/86939 (IRA incorrectly creates an interference ↵Peter Bergner3-66/+97
between a pseudo register and a hard register) gcc/ PR rtl-optimization/86939 * ira-lives.c (make_hard_regno_born): Rename from this... (make_hard_regno_live): ... to this. Remove update to conflict information. Update function comment. (make_hard_regno_dead): Add conflict information update. Update function comment. (make_object_born): Rename from this... (make_object_live): ... to this. Remove update to conflict information. Update function comment. (make_object_dead): Add conflict information update. Update function comment. (mark_pseudo_regno_live): Call make_object_live. (mark_pseudo_regno_subword_live): Likewise. (mark_hard_reg_dead): Update function comment. (mark_hard_reg_live): Call make_hard_regno_live. (process_bb_node_lives): Likewise. * lra-lives.c (make_hard_regno_born): Rename from this... (make_hard_regno_live): ... to this. Remove update to conflict information. Remove now uneeded check_pic_pseudo_p argument. Update function comment. (make_hard_regno_dead): Add check_pic_pseudo_p argument and add update to conflict information. Update function comment. (mark_pseudo_live): Remove update to conflict information. Update function comment. (mark_pseudo_dead): Add conflict information update. (mark_regno_live): Call make_hard_regno_live. (mark_regno_dead): Call make_hard_regno_dead with new arguement. (process_bb_lives): Call make_hard_regno_live and make_hard_regno_dead. From-SVN: r264726
2018-09-30re PR fortran/87359 (pointer being freed was not allocated)Paul Thomas4-4/+114
2018-09-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/87359 * trans-array.c (gfc_is_reallocatable_lhs): Correct the problem introduced by r264358, which prevented components of associate names from being reallocated on assignment. 2018-09-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/87359 * gfortran.dg/associate_40.f90 : New test. From-SVN: r264725
2018-09-30re PR fortran/70752 (Incorrect LEN for ALLOCATABLE CHARACTER)Paul Thomas7-4/+244
2018-09-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/70752 PR fortran/72709 * trans-array.c (gfc_conv_scalarized_array_ref): If this is a deferred type and the info->descriptor is present, use the info->descriptor (gfc_conv_array_ref): Is the se expr is a descriptor type, pass it as 'decl' rather than the symbol backend_decl. (gfc_array_allocate): If the se string_length is a component reference, fix it and use it for the expression string length if the latter is not a variable type. If it is a variable do an assignment. Make use of component ref string lengths to set the descriptor 'span'. (gfc_conv_expr_descriptor): For pointer assignment, do not set the span field if gfc_get_array_span returns zero. * trans.c (get_array_span): If the upper bound a character type is zero, use the descriptor span if available. 2018-09-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/70752 PR fortran/72709 * gfortran.dg/deferred_character_25.f90 : New test. * gfortran.dg/deferred_character_26.f90 : New test. * gfortran.dg/deferred_character_27.f90 : New test to verify that PR82617 remains fixed. From-SVN: r264724
2018-09-30re PR fortran/70149 ([F08] Character pointer initialization causes ICE)Paul Thomas4-1/+46
2018-09-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/70149 * trans-decl.c (gfc_get_symbol_decl): A deferred character length pointer that is initialized needs the string length to be initialized as well. 2018-09-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/70149 * gfortran.dg/deferred_character_24.f90 : New test. From-SVN: r264721
2018-09-30Daily bump.GCC Administrator1-1/+1
From-SVN: r264720
2018-09-29i386: Use TImode for BLKmode values in 2 integer registersH.J. Lu4-2/+65
When passing and returning BLKmode values in 2 integer registers, use 1 TImode register instead of 2 DImode registers. Otherwise, V1TImode may be used to move and store such BLKmode values, which prevent RTL optimizations. gcc/ PR target/87370 * config/i386/i386.c (construct_container): Use TImode for BLKmode values in 2 integer registers. gcc/testsuite/ PR target/87370 * gcc.target/i386/pr87370.c: New test. From-SVN: r264716
2018-09-29re PR fortran/65677 (Incomplete assignment on deferred-length character ↵Paul Thomas4-1/+61
variable) 2018-09-29 Paul Thomas <pault@gcc.gnu.org> PR fortran/65667 * trans-expr.c (gfc_trans_assignment_1): If there is dependency fix the rse stringlength. 2018-09-29 Paul Thomas <pault@gcc.gnu.org> PR fortran/65667 * gfortran.dg/dependency_52.f90 : New test. From-SVN: r264715
2018-09-29builtins.c (unterminated_array): Pass in c_strlen_data * to c_strlen rather ↵Jeff Law4-36/+92
than just a tree *. * builtins.c (unterminated_array): Pass in c_strlen_data * to c_strlen rather than just a tree *. (c_strlen): Change NONSTR argument to a c_strlen_data pointer. Update recursive calls appropriately. If caller did not provide a suitable data pointer, create a local one. When a non-terminated string is discovered, bubble up information about the string via the c_strlen_data object. * builtins.h (c_strlen): Update prototype. (c_strlen_data): New structure. * gimple-fold.c (get_range_strlen): Update calls to c_strlen. For a type 2 call, if c_strlen indicates a non-terminated string use the length of the non-terminated string. (gimple_fold_builtin_stpcpy): Update calls to c_strlen. From-SVN: r264712
2018-09-29re PR target/87467 (Incorrect function parameter for _mm512_abs_pd in ↵Jakub Jelinek4-12/+26
`include/avx512fintrin.h`) PR target/87467 * config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use __m512d type for __A argument rather than __m512. * gcc.target/i386/avx512f-abspd-1.c (SIZE): Divide by two. (CALC): Use double instead of float. (TEST): Adjust to test _mm512_abs_pd and _mm512_mask_abs_pd rather than _mm512_abs_ps and _mm512_mask_abs_ps. From-SVN: r264711
2018-09-29Daily bump.GCC Administrator1-1/+1
From-SVN: r264709
2018-09-28match.pd (simple_comparison): Don't optimize if either operand is a function ↵John David Anglin2-2/+9
pointer when... * match.pd (simple_comparison): Don't optimize if either operand is a function pointer when target needs function pointer canonicalization. From-SVN: r264705
2018-09-29rs5000: Delete all specific asm_cpu_* and ASM_CPU_*_SPECSegher Boessenkool3-34/+31
Now that e.g. ASM_CPU_POWER5_SPEC is always "-mpower5" it is clearer and easier to just write that directly. * config/rs6000/driver-rs6000.c (asm_names): Adjust the entries for power5 .. power9 to remove indirection. * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC, ASM_CPU_POWER6_SPEC, ASM_CPU_POWER7_SPEC, ASM_CPU_POWER8_SPEC, ASM_CPU_POWER9_SPEC, ASM_CPU_476_SPEC): Delete. (ASM_CPU_SPEC): Adjust. (EXTRA_SPECS): Delete asm_cpu_power5, asm_cpu_power6, asm_cpu_power7, asm_cpu_power8, asm_cpu_power9, asm_cpu_476. From-SVN: r264704
2018-09-29rs6000: Delete HAVE_AS_DCISegher Boessenkool6-74/+8
Every supported assembler supports these instructions. Committing. * config.in: Delete HAVE_AS_DCI. * config/powerpcspe/powerpcspe.h: Treat HAVE_AS_DCI as always true. * config/rs6000/rs6000.h: Ditto. * configure.ac: Delete HAVE_AS_DCI. * configure: Regenerate. From-SVN: r264703
2018-09-28rs6000: Delete HAVE_AS_LWSYNC and TARGET_LWSYNC_INSTRUCTIONSegher Boessenkool8-86/+14
All supported assemblers know lwsync, so we never need to generate this instruction using the .long escape hatch. * config.in (HAVE_AS_LWSYNC): Delete. * config/powerpcspe/powerpcspe.h (TARGET_LWSYNC_INSTRUCTION): Delete. * config/powerpcspe/sync.md (*lwsync): Always generate lwsync, never do it as a .long . * config/rs6000/rs6000.h (TARGET_LWSYNC_INSTRUCTION): Delete. * config/rs6000/sync.md (*lwsync): Always generate lwsync, never do it as a .long . * configure.ac: Delete HAVE_AS_LWSYNC. * configure: Regenerate. From-SVN: r264702
2018-09-28calls.c (expand_call): Try to do a tail call for thunks at -O0 too.Eric Botcazou16-49/+441
* calls.c (expand_call): Try to do a tail call for thunks at -O0 too. * cgraph.h (struct cgraph_thunk_info): Add indirect_offset. (cgraph_node::create_thunk): Add indirect_offset parameter. (thunk_adjust): Likewise. * cgraph.c (cgraph_node::create_thunk): Add indirect_offset parameter and initialize the corresponding field with it. (cgraph_node::dump): Dump indirect_offset field. * cgraphclones.c (duplicate_thunk_for_node): Deal with indirect_offset. * cgraphunit.c (cgraph_node::analyze): Be prepared for external thunks. (thunk_adjust): Add indirect_offset parameter and deal with it. (cgraph_node::expand_thunk): Deal with the indirect_offset field and pass it to thunk_adjust. Do not call the target hook if it's non-zero or if the thunk is external or local. Fix formatting. Do not chain the RESULT_DECL to BLOCK_VARS. Pass the static chain to the target, if any, in the GIMPLE representation. * ipa-icf.c (sem_function::equals_wpa): Deal with indirect_offset. * lto-cgraph.c (lto_output_node): Write indirect_offset field. (input_node): Read indirect_offset field. * tree-inline.c (expand_call_inline): Pass indirect_offset field in the call to thunk_adjust. * tree-nested.c (struct nesting_info): Add thunk_p field. (create_nesting_tree): Set it. (convert_all_function_calls): Copy static chain from targets to thunks. (finalize_nesting_tree_1): Return early for thunks. (unnest_nesting_tree_1): Do not finalize thunks. (gimplify_all_functions): Do not gimplify thunks. cp/ * method.c (use_thunk): Adjust call to cgraph_node::create_thunk. ada/ * gcc-interface/decl.c (is_cplusplus_method): Do not require C++ convention on Interfaces. * gcc-interface/trans.c (Subprogram_Body_to_gnu): Try to create a bona-fide thunk and hand it over to the middle-end. (get_controlling_type): New function. (use_alias_for_thunk_p): Likewise. (thunk_labelno): New static variable. (make_covariant_thunk): New function. (maybe_make_gnu_thunk): Likewise. * gcc-interface/utils.c (finish_subprog_decl): Set DECL_CONTEXT of the result DECL here instead of... (end_subprog_body): ...here. Co-Authored-By: Pierre-Marie de Rodat <derodat@adacore.com> From-SVN: r264701
2018-09-28opt-suggestions.c: fix minor memory leakDavid Malcolm2-0/+6
gcc/ChangeLog: * opt-suggestions.c (option_proposer::build_option_suggestions): Release "option_values". From-SVN: r264698
2018-09-28dumpfile.c: use prefixes other than 'note: ' for ↵David Malcolm20-53/+136
MSG_{OPTIMIZED_LOCATIONS|MISSED_OPTIMIZATION} As noted at Cauldron, dumpfile.c currently emits "note: " for all kinds of dump message, so that (after filtering) there's no distinction between MSG_OPTIMIZED_LOCATIONS vs MSG_NOTE vs MSG_MISSED_OPTIMIZATION in the textual output. This patch changes dumpfile.c so that the "note: " varies to show which MSG_* was used, with the string prefix matching that used for filtering in -fopt-info, hence e.g. directive_unroll_3.f90:24:0: optimized: loop unrolled 7 times and: pr19210-1.c:24:3: missed: missed loop optimization: niters analysis ends up with assumptions. The patch adds "dg-optimized" and "dg-missed" directives for use in the testsuite for matching these (with -fopt-info on stderr; they don't help for dumpfile output). The patch also converts the various problem-reporting dump messages in coverage.c:get_coverage_counts to use MSG_MISSED_OPTIMIZATION rather than MSG_OPTIMIZED_LOCATIONS, as the docs call out "optimized" as "information when an optimization is successfully applied", whereas "missed" is for "information about missed optimizations", and problems with profile data seem to me to fall much more into the latter category than the former. Doing so requires converting a few tests from using "-fopt-info" (which is implicitly "-fopt-info-optimized-optall") to getting the "missed" optimizations. Changing them to "-fopt-info-missed" added lots of noise from the vectorizer, so I changed these tests to use "-fopt-info-missed-ipa". gcc/ChangeLog: * coverage.c (get_coverage_counts): Convert problem-reporting dump messages from MSG_OPTIMIZED_LOCATIONS to MSG_MISSED_OPTIMIZATION. * dumpfile.c (kind_as_string): New function. (dump_loc): Rather than a hardcoded prefix of "note: ", use kind_as_string to vary the prefix based on dump_kind. (selftest::test_capture_of_dump_calls): Update for above. gcc/testsuite/ChangeLog: * c-c++-common/unroll-1.c: Update expected output from "note" to "optimized". * c-c++-common/unroll-2.c: Likewise. * c-c++-common/unroll-3.c: Likewise. * g++.dg/tree-ssa/dom-invalid.C: Update expected output from dg-message to dg-missed. Convert param from -fopt-info to -fopt-info-missed-ipa. * g++.dg/tree-ssa/pr81408.C: Update expected output from dg-message to dg-missed. * g++.dg/vect/slp-pr56812.cc: Update expected output from dg-message to dg-optimized. * gcc.dg/pr26570.c: Update expected output from dg-message to dg-missed. Convert param from -fopt-info to -fopt-info-missed-ipa. * gcc.dg/pr32773.c: Likewise. * gcc.dg/tree-ssa/pr19210-1.c: Update expected output from dg-message to dg-missed. * gcc.dg/unroll-2.c: Update expected output from dg-message to dg-optimized. * gcc.dg/vect/nodump-vect-opt-info-1.c: Likewise. Convert param from -fopt-info to -fopt-info-vec. * gfortran.dg/directive_unroll_1.f90: Update expected output from "note" to "optimized". * gfortran.dg/directive_unroll_2.f90: Likewise. * gfortran.dg/directive_unroll_3.f90: Likewise. * gnat.dg/unroll4.adb: Likewise. * lib/gcc-dg.exp (dg-optimized): New procedure. (dg-missed): New procedure. From-SVN: r264697
2018-09-28Fix gcc.dg/torture/fp-int-convert.h for excess precision after PR c/87390.Joseph Myers2-1/+8
As reported in <https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01684.html>, some fp-int-convert tests fail after my fix for PR c/87390, in Arm / AArch64 configurations where _Float16 uses excess precision by default. The issue is comparisons of the results of a conversion by assignment (compile-time or run-time) from integer to floating-point with the original integer value; previously this would compare against an implicit compile-time conversion to the target type, but now, for C11 and later, it compares against an implicit compile-time conversion to a possibly wider evaluation format. This is fixed by adding casts to the test so that the comparison is with a value converted explicitly to the target type at compile time, without any use of a wider evaluation format. PR c/87390 * gcc.dg/torture/fp-int-convert.h (TEST_I_F_VAL): Convert integer values explicitly to target type for comparison. From-SVN: r264696
2018-09-28i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.Uros Bizjak5-15/+20
* config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG. (GET_SSE_REGNO): Rename from SSE_REGNO. Update all uses for rename. From-SVN: r264695
2018-09-28i386.h (CC_REGNO): Remove FPSR_REGS.Uros Bizjak4-23/+25
* config/i386/i386.h (CC_REGNO): Remove FPSR_REGS. * config/i386/i386.c (ix86_fixed_condition_code_regs): Use INVALID_REGNUM instead of FPSR_REG. (ix86_md_asm_adjust): Do not clobber FPSR_REG. * config/i386/i386.md: Update comment of FP compares. (fldenv): Do not clobber FPSR_REG. From-SVN: r264694
2018-09-28Fix date in ChangeLog file.Steve Ellcey1-1/+1
From-SVN: r264693
2018-09-28re PR testsuite/87433 (gcc.dg/zero_bits_compound-1.c and ↵Steve Ellcey2-1/+7
gcc.target/aarch64/ashltidisi.c tests fail after combine two to two instruction patch on aarch64) 2018-09-28 Steve Ellcey <sellcey@cavium.com> PR testsuite/87433 * gcc.target/aarch64/ashltidisi.c: Expect 3 asr instructions instead of 4. From-SVN: r264692
2018-09-28re PR testsuite/87433 (gcc.dg/zero_bits_compound-1.c and ↵Steve Ellcey2-1/+6
gcc.target/aarch64/ashltidisi.c tests fail after combine two to two instruction patch on aarch64) 2018-09-28 Steve Ellcey <sellcey@cavium.com> PR testsuite/87433 * gcc.dg/zero_bits_compound-1.c: Do not run on aarch64*-*-*. From-SVN: r264691
2018-09-28compiler: fix parsing issue with non-ASCII first package charIan Lance Taylor4-4/+19
Fix a bug in the parser code that decides whether a given name should be considered exported or not. The function Lex::is_exported_name (which assumes that its input is a mangled name) was being called on non-mangled (raw utf-8) names in various places. For the bug in question this caused an imported package to be registered under the wrong name. To fix the issue, rename 'Lex::is_exported_name' to 'Lex::is_exported_mangled_name', and add a new 'Lex::is_exported_name' that works on utf-8 strings. Fixes golang/go#27836. Reviewed-on: https://go-review.googlesource.com/137736 From-SVN: r264690
2018-09-28tree.h (BLOCK_ORIGIN): New.Richard Biener12-83/+30
2018-09-28 Richard Biener <rguenther@suse.de> * tree.h (BLOCK_ORIGIN): New. * omp-expand.c (grid_expand_target_grid_body): Assign BLOCK_ORIGIN to BLOCK_ABSTRACT_ORIGIN. * tree-inline.c (remap_block): Likewise. * auto-profile.c (get_function_decl_from_block): Simplify by eliding the BLOCK_ABSTRACT_ORIGIN chasing. * langhooks.c (lhd_print_error_function): Likewise. * optinfo-emit-json.cc (optrecord_json_writer::inlining_chain_to): Likewise. * tree-ssa-live.c (remove_unused_scope_block_p): Likewise. * tree.c (block_nonartificial_location): Likewise. (block_ultimate_origin): Likewise. * tree-pretty-print.c (percent_K_format): Likewise. Remove no longer needed LTO case. cp/ * error.c (cp_print_error_function): Simplify by eliding the BLOCK_ABSTRACT_ORIGIN chasing. From-SVN: r264689
2018-09-28Simplify vec_merge according to the mask.Andrew Stubbs2-0/+146
This patch was part of the original patch we acquired from Honza and Martin. It simplifies nested vec_merge operations using the same mask. Self-tests are included. 2018-09-28 Andrew Stubbs <ams@codesourcery.com> Jan Hubicka <jh@suse.cz> Martin Jambor <mjambor@suse.cz> * simplify-rtx.c (simplify_merge_mask): New function. (simplify_ternary_operation): Use it, also see if VEC_MERGEs with the same masks are used in op1 or op2. (test_vec_merge): New function. (test_vector_ops): Call test_vec_merge. Co-Authored-By: Jan Hubicka <jh@suse.cz> Co-Authored-By: Martin Jambor <mjambor@suse.cz> From-SVN: r264688
2018-09-28sparc-protos.h (sparc_branch_cost): Declare.Eric Botcazou13-84/+168
* config/sparc/sparc-protos.h (sparc_branch_cost): Declare. * config/sparc/sparc.h (BRANCH_COST): Call sparc_branch_cost. * config/sparc/sparc.c (struct processor_costs): Add branch_cost field. (cypress_costs): Set it. (supersparc_costs): Likewise. (hypersparc_costs): Likewise. (leon_cost): Likewise. (leon3_costs): Likewise. (sparclet_costs): Likewise. (ultrasparc_costs): Likewise. (ultrasparc_costs): Likewise. (niagara_costs): Likewise. (niagara2_costs): Likewise. (niagara3_costs): Likewise. (niagara4_costs): Likewise. (niagara7_costs): Likewise. (m8_costs): Likewise. (TARGET_CAN_FOLLOW_JUMP): Define. (pass_work_around_errata::gate): Minor tweak. (sparc_option_override): Remove MASK_FSMULD mask for V7 processors. Do not set both MASK_VIS4 and MASK_VIS4B for M8 processor. Automaitcally clear MASK_FSMULD mask for V7 processors. (sparc_can_follow_jump): New static function. (output_ubranch): Deal with CROSSING_JUMP_P. (sparc_use_sched_lookahead): Rewrite using switch statement. (sparc_issue_rate): Reorder. (sparc_branch_cost): New function. From-SVN: r264687
2018-09-28Daily bump.GCC Administrator1-1/+1
From-SVN: r264685
2018-09-28rs6000: Fix one more vec_splat caseSegher Boessenkool2-1/+6
This fixes the one remaining case where the stricter vec_splat checking complains in the testsuite. * g++.dg/ext/altivec-6.C: Change the vec_splat second argument to a valid value, in the "vector bool int" case. From-SVN: r264681
2018-09-27tree.h (tree_to_shwi): Add attribute nonnull and pure.Martin Sebor4-12/+34
gcc/ChangeLog: * tree.h (tree_to_shwi): Add attribute nonnull and pure. (tree_to_poly_int64, tree_to_uhwi, tree_to_poly_uint64): Same. (int_fits_type_p): Same. gcc/ada/ChangeLog: * gcc-interface/utils.c (make_packable_type): Introduce a temporary to avoid -Wnonnull. (unchecked_convert): Same. From-SVN: r264680
2018-09-27mmintrin.h (_mm_unpackhi_pi8): Change __int128_t to __int128.Jinsong Ji2-33/+33
2018-09-27 Jinsong Ji <jji@us.ibm.com> Bill Schmidt <wschmidt@linux.ibm.com> * config/rs6000/mmintrin.h (_mm_unpackhi_pi8): Change __int128_t to __int128. (_mm_unpacklo_pi8): Likewise. (_mm_add_pi8): Likewise. (_mm_add_pi16): Likewise. (_mm_add_pi32): Likewise. (_mm_sub_pi8): Likewise. (_mm_sub_pi16): Likewise. (_mm_sub_pi32): Likewise. (_mm_cmpgt_pi8): Likewise. (_mm_cmpeq_pi16): Likewise. (_mm_cmpgt_pi16): Likewise. (_mm_cmpeq_pi32): Likewise. (_mm_cmpgt_pi32): Likewise. (_mm_adds_pi8): Likewise. (_mm_adds_pi16): Likewise. (_mm_adds_pu8): Likewise. (_mm_adds_pu16): Likewise. (_mm_subs_pi8): Likewise. (_mm_subs_pi16): Likewise. (_mm_subs_pu8): Likewise. (_mm_subs_pu16): Likewise. (_mm_madd_pi16): Likewise. (_mm_mulhi_pi16): Likewise. (_mm_mullo_pi16): Likewise. (_mm_sll_pi16): Likewise. (_mm_sra_pi16): Likewise. (_mm_srl_pi16): Likewise. (_mm_set1_pi16): Likewise. (_mm_set1_pi8): Likewise. * config/rs6000/xmmintrin.h (_mm_max_pi16): Likewise. (_mm_max_pu8): Likewise. (_mm_min_pi16): Likewise. (_mm_min_pu8): Likewise. From-SVN: r264678
2018-09-27i386.md (UNSPEC_FLDCW): Remove.Uros Bizjak2-2/+2
* config/i386/i386.md (UNSPEC_FLDCW): Remove. From-SVN: r264677
2018-09-27i386.md (FPSR_REG): Remove.Uros Bizjak8-153/+162
* config/i386/i386.md (FPSR_REG): Remove. (x86_fnstcw_1): Use (const_int 0) instead of FPCR_REG. (x86_fldcw_1): Remove insn pattern. (fnstenv): Do not clobber FPCR_REG. (fldenv): Ditto. * config/i386/i386.h (FIXED_REGISTERS) Remove fpsr register. (CALL_USED_REGISTERS): Ditto. (REG_ALLOC_ORDER): Ditto. (REG_CLASS_CONTENTS): Ditto. (HI_REGISTER_NAMES): Ditto. (ADDITIONAL_REGISTER_NAMES): Use defines instead of numerical constants. * config/i386/i386.c (regclass_map): Remove fpsr register. (dbx_register_map): Ditto. (dbx64_register_map): Ditto. (svr4_dbx_register_map): Ditto. (print_reg): Do not handle FPCR_REG. testsuite/ChangeLog: * gcc.dg/rtl/x86_64/dfinit.c: Update scan-rtl-dump string. * gcc.dg/rtl/x86_64/times-two.c.before-df.c: Ditto. * gcc.target/i386/pr79804.c (foo): Use register "19", not "20". From-SVN: r264676
2018-09-27rs6000: Delete many HAVE_AS_* (PR87149)Segher Boessenkool8-837/+16
This deletes most HAVE_AS_* that determine if the assembler supports some ISA level (and also HAVE_AS_MFPGPR and HAVE_AS_DFP). These are not useful: we will only generate an instruction that requires some newer ISA if the user specifically asked for it (with -mcpu=, say). If the assembler cannot handle that, it is fine if it gives an error. They also hurt: it increases the number of possible situations that all need handling and all need testing. We do not handle all cases, and obviously do not test all either. This patch removes: HAVE_AS_POPCNTB (power5, 2.02) HAVE_AS_FPRND (power5+, 2.04) HAVE_AS_CMPB (power6, 2.05) HAVE_AS_POPCNTD (power7, 2.06) HAVE_AS_POWER8 (power8, 2.07) HAVE_AS_POWER9 (power9, 3.0) HAVE_AS_DFP (power6, 2.05, server) HAVE_AS_MFPGPR (power6x but not later, not arch) PR target/87149 * config.in (HAVE_AS_CMPB, HAVE_AS_DFP, HAVE_AS_FPRND, HAVE_AS_MFPGPR, HAVE_AS_POPCNTB, HAVE_AS_POPCNTD, HAVE_AS_POWER8, HAVE_AS_POWER9): Delete, always treat as true. * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal): Ditto. Simplify remaining code. * config/powerpcspe/powerpcspe.h: Ditto. * config/rs6000/rs6000.c (rs6000_option_override_internal): Ditto. Simplify remaining code. (rs6000_expand_builtin): Ditto. * config/rs6000/rs6000.h: Ditto. * configure.ac: Ditto. * configure: Regenerate. From-SVN: r264675
2018-09-27coverage.c (get_coverage_counts): Revert the formatting of missing profile ↵Martin Liska13-17/+33
opt info. 2018-09-27 Martin Liska <mliska@suse.cz> * coverage.c (get_coverage_counts): Revert the formatting of missing profile opt info. * g++.dg/pr60518.C: Add -Wno-missing-profile. * g++.dg/torture/pr59265.C: Likewise. * g++.dg/tree-prof/morefunc.C: Likewise. * g++.dg/tree-ssa/dom-invalid.C: Likewise. * gcc.dg/pr26570.c: Likewise. * gcc.dg/pr32773.c: Likewise. * gcc.dg/pr40209.c: Likewise. * gcc.dg/pr51957-1.c: Likewise. * gcc.dg/pr80747.c: Likewise. * gcc.target/aarch64/pr62262.c: Likewise. From-SVN: r264669
2018-09-27re PR debug/87451 (FAIL: gcc.dg/debug/dwarf2/inline5.c)Richard Biener2-4/+9
2018-09-27 Richard Biener <rguenther@suse.de> PR testsuite/87451 * gcc.dg/debug/dwarf2/inline5.c: Deal with different comment characters. From-SVN: r264668
2018-09-27re PR debug/37801 (DWARF output for inlined functions doesn't always use ↵Richard Biener5-13/+63
DW_TAG_inlined_subroutine) 2018-09-27 Richard Biener <rguenther@suse.de> PR debug/37801 PR debug/87440 * dwarf2out.c (set_block_origin_self): Do not mark outermost block as we do not output that. (gen_inlined_subroutine_die): Elide the originally outermost block, matching what we do for concrete instances. (decls_for_scope): Add parameter specifying whether to recurse to subblocks. * gcc.dg/debug/dwarf2/inline2.c: Adjust. * gcc.dg/debug/dwarf2/inline4.c: New testcase. From-SVN: r264667
2018-09-27[pr82089] Don't sign-extend SFV 1 in BImodeAndrew Stubbs2-4/+15
This is an update of the patch posted to PR82089 long ago. We ran into the same bug on GCN, so we need this fixed as part of this series. 2018-09-27 Andrew Stubbs <ams@codesourcery.com> Tom de Vries <tom@codesourcery.com> PR 82089 gcc/ * expmed.c (emit_cstore): Fix handling of result_mode == BImode and STORE_FLAG_VALUE == 1. Co-Authored-By: Tom de Vries <tom@codesourcery.com> From-SVN: r264666
2018-09-27re PR c++/67544 (ICE: SIGSEGV in tree_check3 (tree.h:2896) with -fconcepts)Paolo Carlini2-0/+16
2018-09-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/67544 * g++.dg/concepts/pr67544.C: New. From-SVN: r264665
2018-09-27re PR c++/84940 (internal compiler error: in build_value_init_noctor, at ↵Paolo Carlini4-3/+23
cp/init.c:465) /cp 2018-09-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84940 * semantics.c (finish_unary_op_expr): Check return value of build_x_unary_op for error_mark_node. /testsuite 2018-09-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84940 * g++.dg/expr/unary4.C: New. From-SVN: r264664
2018-09-27S/390: Implement speculation barrierAndreas Krebbel2-2/+27
gcc/ChangeLog: 2018-09-27 Andreas Krebbel <krebbel@linux.ibm.com> * config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New constant definitions. ("tx_assist"): Replace magic number with PPA_TX_ABORT. ("*ppa"): Enable pattern also for -march=zEC12 -mno-htm. ("speculation_barrier"): New expander definition. From-SVN: r264663
2018-09-27Daily bump.GCC Administrator1-1/+1
From-SVN: r264661
2018-09-26re PR gcov-profile/86957 (gcc should warn about missing profiles for a ↵Indu Bhagat6-17/+70
compilation unit or a new function with -fprofile-use) 2018-09-26 Indu Bhagat <indu.bhagat@oracle.com> PR gcov-profile/86957 * common.opt: New warning option -Wmissing-profile. * coverage.c (get_coverage_counts): Add warning for missing .gcda file. * doc/invoke.texi: Document -Wmissing-profile. From-SVN: r264657
2018-09-26Support excess precision for integer / floating-point comparisons (PR c/87390).Joseph Myers5-0/+130
In C11, implicit conversions from integer to floating-point types produce results with the range and precision of the corresponding evaluation format rather than only those of the type implicitly converted to. This patch implements that case of C11 excess precision semantics in the case of a comparison between integer and floating-point types, previously missed when implementing other cases of excess precision for such implicit conversions. As with other such fixes, this patch conservatively follows the reading of C99 where conversions from integer to floating-point do not produce results with excess precision and so the change is made for C11 mode only. Bootstrapped with no regressions on x86_64-pc-linux-gnu. gcc/c: PR c/87390 * c-typeck.c (build_binary_op): Use excess precision for comparisons of integers and floating-point for C11 and later. gcc/testsuite: PR c/87390 * gcc.target/i386/excess-precision-9.c, gcc.target/i386/excess-precision-10.c: New tests. From-SVN: r264656
2018-09-26RISC-V: Add missing negate patterns.Jim Wilson2-3/+43
gcc/ * config/riscv/riscv.md (subsi3_extended2): Add J constraint. (negdi2, negsi2, negsi2_extended, negsi2_extended2): New. From-SVN: r264655
2018-09-26tree.c (zerop): Change return type to bool.Martin Sebor3-40/+55
gcc/ChangeLog: * tree.c (zerop): Change return type to bool. (integer_zerop, integer_onep, integer_each_onep): Same. (integer_all_onesp, integer_minus_onep, integer_pow2p): Same. (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same. (real_onep, real_minus_onep, chain_index): Same. (print_type_hash_statistics, type_list_equal): Same. * tree.h (zerop): Same. (zerop, integer_zerop, integer_onep, integer_each_onep): Same. (integer_all_onesp, integer_minus_onep, integer_pow2p): Same. (integer_nonzerop, integer_truep, tree_ctz, real_zerop): Same. (real_onep, real_minus_onep, chain_index): Same. (print_type_hash_statistics, type_list_equal): Same. From-SVN: r264653
2018-09-26RISC-V: Delete obsolete MIPS comment.Jim Wilson2-2/+5
gcc/ * config/riscv/riscv.h (FUNCTION_ARG_REGNO_P): Fix comment. From-SVN: r264652
2018-09-26re PR target/87414 (-mindirect-branch=thunk produces thunk with incorrect ↵Jakub Jelinek2-0/+26
CFI on x86_64) PR target/87414 * config/i386/i386.c: Include debug.h and dwarf2out.h. (output_indirect_thunk): Emit DW_CFA_def_cfa_offset after the call. From-SVN: r264651
2018-09-26Fix AArch64 ILP32 ICE.Andrew Stubbs2-0/+5
Ensure that the address really is the correct mode for an address. 2018-09-25 Andrew Stubbs <ams@codesourcery.com> gcc/ * builtins.c (get_builtin_sync_mem): Force address mode conversion. From-SVN: r264650
2018-09-26i386.h (enum reg_class): Remove FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS.Uros Bizjak4-31/+38
* config/i386/i386.h (enum reg_class): Remove FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS. (REG_CLASS_NAMES): Ditto. (REG_CLASS_CONTENTS): Ditto. * config/i386/i386.c (ix86_preferred_reload_class) Do not handle FP_TOP_SSE_REGS and FP_SECOND_SSE_REGS classes. (ix86_preferred_output_reload_class): Ditto. * config/i386/i386.md (fix_trunc<mode>_i387_fisttp): Change "=&1f" clobber constraint to "=&f". (fix_truncdi_i387): Ditto. (lrintxfdi2): Ditto. (fistdi2_<rounding>): Ditto. (fpremxf4_i387): Change "=u" constraint to "=f". (fprem1xf4_i387): Ditto. (sincosxf3): Ditto. (fptanxf4_i387): Ditto. (fxtractxf3_i387): Ditto. (fscalexf4_i387): Ditto. (atan2xf3): Change "u" constraint to "f". (fyl2xxf3_i387): Ditto. (fyl2xp1xf3_i387): Ditto. From-SVN: r264648