aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2019-05-12Daily bump.GCC Administrator1-1/+1
From-SVN: r271105
2019-05-11darwin, ppc - improve debug for mdebug-stackIain Sandoe2-0/+9
Darwin uses an out of line save when complete context needs to be saved, including the vector regs. This patch prints the status of that when -mdebug=stack is given. gcc/ 2019-05-12 Iain Sandoe <iain@sandoe.co.uk> * config/rs6000/rs6000.c (debug_stack_info): When -mdebug=stack is given, print the state of the EH "save world" computation for Darwin. From-SVN: r271101
2019-05-11testsuite, darwin] Fix PR81058.Iain Sandoe4-0/+11
The tests fail because Darwin indirects common accesses which causes different codegen and the mismatch in output. Placing the vars in regular .data section fixes that. gcc/testsuite/ 2019-05-11 Iain Sandoe <iain@sandoe.co.uk> PR testsuite/81058 * gcc.target/i386/avx512bw-vpmovswb-1.c: Use regular data section for variables on Darwin, rather than common. * gcc.target/i386/avx512bw-vpmovuswb-1.c: Likewise. * gcc.target/i386/avx512bw-vpmovwb-1.c: Likewise. From-SVN: r271097
2019-05-11re PR c++/59813 (tail-call elimination didn't fire for left-shift of char to ↵Jakub Jelinek2-1/+7
cout) PR c++/59813 * config/aarch64/aarch64.c (aarch64_expand_epilogue): Don't add EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues. From-SVN: r271093
2019-05-11i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm): Use pinsrd for TARGET_SSE4_1.Uros Bizjak3-20/+41
* config/i386/i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm): Use pinsrd for TARGET_SSE4_1. * config/i386/sse.md (movdi_to_sse): Ditto. From-SVN: r271092
2019-05-11typeck.c (cp_build_function_call_vec): When mark_used fails unconditionally ↵Paolo Carlini5-1/+35
return error_mark_node. /cp 2019-05-11 Paolo Carlini <paolo.carlini@oracle.com> * typeck.c (cp_build_function_call_vec): When mark_used fails unconditionally return error_mark_node. /testsuite 2019-05-11 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/cpp2a/multiple-deleted-destroying-delete-error-1.C: New. * g++.dg/cpp2a/multiple-deleted-destroying-delete-error-2.C: Likewise. From-SVN: r271091
2019-05-11runtime: set up g earlyIan Lance Taylor1-1/+1
runtime.throw needs a g to work properly. Set up g early, to ensure that if something goes wrong in the runtime startup (e.g. runtime.check fails), the program terminates in a reasonable way. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176657 From-SVN: r271088
2019-05-11Daily bump.GCC Administrator1-1/+1
From-SVN: r271087
2019-05-10re PR fortran/61968 (ICE (assembly failure) due to wrongly generating a ↵Thomas Koenig5-1/+106
vtable for TYPE(*) / BT_ASSUMED_TYPE) 2019-05-10 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/61968 * interface.c (compare_actual_formal): Do not create a vtab if the actual argument is assumed type. 2019-05-10 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/61968 * gfortran.dg/assumed_type_10.f90: New test case. * gfortran.dg/assumed_type_11.f90: New test case. From-SVN: r271076
2019-05-10Fix typo in gcc/fortran/ChangeLogJanne Blomqvist1-1/+1
From-SVN: r271075
2019-05-10compiler: permit inlining receive expressionsIan Lance Taylor3-1/+32
This does not permit any new inlinable functions in the standard library. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176637 From-SVN: r271074
2019-05-10darwin, testsuite - provide an asm shim for AVX12F tests.Iain Sandoe3-1/+99
Darwin will build these tests and run them if/when it's available on the relevant hardware. 2019-05-10 Iain Sandoe <iain@sandoe.co.uk> * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Darwin is now tested. * gcc.target/x86_64/abi/avx512f/asm-support-darwin.s: New. From-SVN: r271073
2019-05-10decl.c (grokvardecl): Use an accurate location in error message about main ↵Paolo Carlini4-1/+12
as a global variable. /cp 2019-05-10 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (grokvardecl): Use an accurate location in error message about main as a global variable. /testsuite 2019-05-10 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/diagnostic/main1.C: New. From-SVN: r271070
2019-05-10call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.Paolo Carlini15-70/+60
2019-05-10 Paolo Carlini <paolo.carlini@oracle.com> * call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P. * cp-gimplify.c (cp_fold): Likewise. * cp-objcp-common.c (cp_type_dwarf_attribute): Likewise. * cp-tree.h (TYPE_OBJ_P, TYPE_PTROBV_P): Likewise. * cvt.c (perform_qualification_conversions): Likewise. * decl.c (grokdeclarator): Likewise. * decl2.c (build_memfn_type): Likewise. * mangle.c (canonicalize_for_substitution, write_type): Likewise. * parser.c (cp_parser_omp_declare_reduction): Likewise. * pt.c (check_explicit_specialization, uses_deducible_template_parms, check_cv_quals_for_unify, dependent_type_p_r): Likewise. * rtti.c (ptr_initializer): Likewise. * semantics.c (finish_asm_stmt, finish_offsetof, cp_check_omp_declare_reduction): Likewise. * tree.c (cp_build_qualified_type_real, cp_build_type_attribute_variant, cxx_type_hash_eq, cxx_copy_lang_qualifiers, cp_free_lang_data): Likewise. * typeck.c (structural_comptypes, convert_arguments, cp_build_addr_expr_1, unary_complex_lvalue, cp_build_c_cast, cp_build_modify_expr, comp_ptr_ttypes_real, type_memfn_rqual): Likewise. From-SVN: r271069
2019-05-10PR c++/78010 - bogus -Wsuggest-override warning on final function.Marek Polacek4-1/+22
* class.c (check_for_override): Don't warn for final functions. * g++.dg/warn/Wsuggest-override-2.C: New test. From-SVN: r271065
2019-05-10compiler: permit inlining variable declaration statementsIan Lance Taylor4-9/+71
This adds all of two inlinable functions to the standard library: crypto/subtle.ConstantTimeLessOrEq, regexp.(*Regexp).Copy. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176378 From-SVN: r271063
2019-05-10tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.Richard Biener2-0/+7
2019-05-10 Richard Biener <rguenther@suse.de> * tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id. (do_rpo_vn): Initialize next_value_id. From-SVN: r271061
2019-05-10Fix a plural in a param description.Martin Liska2-1/+6
2019-05-10 Martin Liska <mliska@suse.cz> * params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD): Fix plural form. From-SVN: r271060
2019-05-10re PR tree-optimization/90385 (ICE: tree check: expected ssa_name, have ↵Jakub Jelinek4-1/+22
real_cst in transform_to_exit_first_loop_alt, at tree-parloops.c:1772) PR tree-optimization/90385 * tree-parloops.c (try_create_reduction_list): Punt on non-SSA_NAME arguments of the exit phis. * gfortran.dg/pr90385.f90: New test. From-SVN: r271059
2019-05-10re PR c++/90383 (GCC generates invalid constexpr copy/move assignment ↵Jakub Jelinek6-5/+62
operators for types with trailing padding. (Again)) PR c++/90383 * tree-inline.h (struct copy_body_data): Add do_not_fold member. * tree-inline.c (remap_gimple_op_r): Avoid folding expressions if id->do_not_fold. (copy_tree_body_r): Likewise. (copy_fn): Set id.do_not_fold to true. * g++.dg/cpp1y/constexpr-90383-1.C: New test. * g++.dg/cpp1y/constexpr-90383-2.C: New test. From-SVN: r271058
2019-05-10re PR fortran/90093 (Extended C interop: optional argument incorrectly ↵Paul Thomas14-55/+238
identified as PRESENT) 2019-05-10 Paul Thomas <pault@gcc.gnu.org> PR fortran/90093 * trans-decl.c (convert_CFI_desc): Test that the dummy is present before doing any of the conversions. PR fortran/90352 * decl.c (gfc_verify_c_interop_param): Restore the error for charlen > 1 actual arguments passed to bind(C) procs. Clean up trailing white space. PR fortran/90355 * trans-array.c (gfc_trans_create_temp_array): Set the 'span' field to the element length for all types. (gfc_conv_expr_descriptor): The force_no_tmp flag is used to prevent temporary creation, especially for substrings. * trans-decl.c (gfc_trans_deferred_vars): Rather than assert that the backend decl for the string length is non-null, use it as a condition before calling gfc_trans_vla_type_sizes. * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): 'force_no_tmp' is set before calling gfc_conv_expr_descriptor. * trans.c (get_array_span): Move the code for extracting 'span' from gfc_build_array_ref to this function. This is specific to descriptors that are component and indirect references. * trans.h : Add the force_no_tmp flag bitfield to gfc_se. 2019-05-10 Paul Thomas <pault@gcc.gnu.org> PR fortran/90093 * gfortran.dg/ISO_Fortran_binding_12.f90: New test. * gfortran.dg/ISO_Fortran_binding_12.c: Supplementary code. PR fortran/90352 * gfortran.dg/iso_c_binding_char_1.f90: New test. PR fortran/90355 * gfortran.dg/ISO_Fortran_binding_4.f90: Add 'substr' to test the direct passing of substrings as descriptors to bind(C). * gfortran.dg/assign_10.f90: Increase the tree_dump count of 'atmp' to account for the setting of the 'span' field. * gfortran.dg/transpose_optimization_2.f90: Ditto. From-SVN: r271057
2019-05-10re PR tree-optimization/88709 (Improve store-merging)Jakub Jelinek2-2/+7
PR tree-optimization/88709 PR tree-optimization/90271 * gcc.dg/store_merging_29.c: Allow 4 stores to replace 6 stores on arm*-*-*. From-SVN: r271056
2019-05-10re PR pch/90326 (Using any precompiled header breaks definition of FLT_MAX)Jakub Jelinek9-3/+34
PR pch/90326 cp/ * config-lang.in (gtfiles): Remove c-family/c-lex.c, add c-family/c-cppbuiltin.c. objc/ * config-lang.in (gtfiles): Add c-family/c-format.c. objcp/ * config-lang.in (gtfiles): Don't add c-family/c-cppbuiltin.c. testsuite/ * g++.dg/pch/pr90326.C: New test. * g++.dg/pch/pr90326.Hs: New file. From-SVN: r271055
2019-05-10Reapply r269790 which was missed during rebase.Martin Liska2-8/+14
2019-05-10 Martin Liska <mliska@suse.cz> * config/i386/i386-expand.c (ix86_expand_floorceildf_32): Reapply changes from r269790. From-SVN: r271054
2019-05-10Add params for jump-table expansion params (PR middle-end/90340).Martin Liska8-13/+107
2019-05-10 Martin Liska <mliska@suse.cz> PR middle-end/90340 * doc/invoke.texi: New params. * params.def (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SIZE): New. (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SPEED): Likewise. * tree-switch-conversion.c (jump_table_cluster::can_be_handled): Use it. * tree-switch-conversion.h (struct jump_table_cluster): Likewise. 2019-05-10 Martin Liska <mliska@suse.cz> PR middle-end/90340 * gcc.dg/tree-ssa/pr90340-2.c: New test. * gcc.dg/tree-ssa/pr90340.c: New test. From-SVN: r271053
2019-05-10Fix location where lto-dump is installed.Martin Liska3-2/+10
2019-05-10 Martin Liska <mliska@suse.cz> * Make-lang.in: Use program_transform_name for lto-dump. * config-lang.in: Do not mark lto-dump compiler as we don't want to have it installed at lib/gcc/x86_64-pc-linux-gnu/10.0.0/lto-dump. From-SVN: r271052
2019-05-10Daily bump.GCC Administrator1-1/+1
From-SVN: r271051
2019-05-10combine: Don't generate IF_THEN_ELSESegher Boessenkool2-8/+4
On all targets I managed to test (21) this results in better code. Only alpha ends up with slightly bigger code. * combine.c (combine_simplify_rtx): Don't make IF_THEN_ELSE RTL. From-SVN: r271047
2019-05-09* de.po, fr.po: Update.Joseph Myers3-102/+71
From-SVN: r271045
2019-05-09compiler: avoid copy for string([]byte) conversion used in map keysCherry Zhang5-1/+30
If a string([]byte) conversion is used immediately as a key for a map read, we don't need to copy the backing store of the byte slice, as mapaccess does not keep a reference to it. The gc compiler does more than this: it also avoids the copy if the map key is a composite literal that contains the conversion as a field, like, T{ ... { ..., string(b), ... }, ... }. For now, we just optimize the simple case, which is probably most common. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176197 * go.dg/mapstring.go: New test. From-SVN: r271044
2019-05-09loop.texi: Remove reference to FOR_EACH_LOOP_BREAK.Bill Schmidt2-4/+5
2019-05-09 Bill Schmidt <wschmidt@linux.ibm.com> * doc/loop.texi: Remove reference to FOR_EACH_LOOP_BREAK. From-SVN: r271042
2019-05-09sel-sched: allow negative insn priority (PR 88879)Alexander Monakov2-2/+5
PR rtl-optimization/88879 * sel-sched.c (sel_target_adjust_priority): Remove assert. From-SVN: r271039
2019-05-09[arm] PR target/90405 New test.Richard Earnshaw2-0/+33
This time really add the test. gcc/testsuite: PR target/90405 * gcc.target/arm/pr90405.c: New test. From-SVN: r271037
2019-05-09[arm] PR target/90405 fix regression for thumb1 with -mtpcs-leaf-frameRichard Earnshaw2-70/+52
-mtpcs-leaf-frame causes an APCS-style backtrace frame to be created on the stack. This should probably be deprecated, but it did reveal an issue with the patch I committed previously to improve the code generation when pushing high registers, in that thumb_find_work_register had a different idea as to which registers were available as scratch registers. The new code actually does a better job of finding a viable work register and doesn't rely so much on assumptions about the ABI, so it seems better to adapt thumb_find_work_register to the new approach. This way we can eliminate some rather crufty code. gcc: PR target/90405 * config/arm/arm.c (callee_saved_reg_p): Move before thumb_find_work_register. (thumb1_prologue_unused_call_clobbered_lo_regs): Move before thumb_find_work_register. Only call df_get_live_out once. (thumb1_epilogue_unused_call_clobbered_lo_regs): Likewise. (thumb_find_work_register): Use thumb1_prologue_unused_call_clobbered_lo_regs instead of ad hoc algorithms to locate a spare call clobbered reg. gcc/testsuite: PR target/90405 * gcc.target/arm/pr90405.c: New test. From-SVN: r271036
2019-05-09Support {MIN,MAX}_EXPR in GIMPLE FE.Martin Liska6-2/+89
2019-05-09 Martin Liska <mliska@suse.cz> * gimple-pretty-print.c (dump_binary_rhs): Dump MIN_EXPR and MAX_EXPR in GIMPLE FE format. 2019-05-09 Martin Liska <mliska@suse.cz> * gimple-parser.c (c_parser_gimple_statement): Support __MIN and __MAX. (c_parser_gimple_unary_expression): Parse also binary expression __MIN and __MAX. (c_parser_gimple_parentized_binary_expression): New function. 2019-05-09 Martin Liska <mliska@suse.cz> * gcc.dg/gimplefe-39.c: New test. From-SVN: r271035
2019-05-09Support profile (BB counts and edge probabilities) in GIMPLE FE.Martin Liska15-71/+377
2019-05-09 Martin Liska <mliska@suse.cz> * tree-cfg.c (dump_function_to_file): Dump entry BB count. * gimple-pretty-print.c (dump_gimple_bb_header): Dump BB count. (pp_cfg_jump): Dump edge probability. * profile-count.c (profile_quality_as_string): Simplify with a static array. (parse_profile_quality): New function. (profile_count::dump): Simplify with a static array. (profile_count::from_gcov_type): Add new argument. * profile-count.h (parse_profile_quality): Likewise. * predict.h (set_hot_bb_threshold): New. * params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD): New param. * predict.c (get_hot_bb_threshold): Set from the new param. (set_hot_bb_threshold): New. 2019-05-09 Martin Liska <mliska@suse.cz> * gimple-parser.c (struct gimple_parser): Add probability. for gimple_parser_edge. (gimple_parser::push_edge): Add new argument probability. (c_parser_gimple_parse_bb_spec): Parse also probability if present. (c_parser_parse_gimple_body): Set edge probability. (c_parser_gimple_compound_statement): Consume token before calling c_parser_gimple_goto_stmt. Parse BB counts. (c_parser_gimple_statement): Pass new argument. (c_parser_gimple_goto_stmt): Likewise. (c_parser_gimple_if_stmt): Likewise. (c_parser_gimple_or_rtl_pass_list): Parse hot_bb_threshold. * c-parser.c (c_parser_declaration_or_fndef): Pass hot_bb_threshold argument. * c-tree.h (struct c_declspecs): Add hot_bb_threshold field. (c_parser_gimple_parse_bb_spec_edge_probability): New. 2019-05-09 Martin Liska <mliska@suse.cz> * gcc.dg/gimplefe-37.c: New test. * gcc.dg/gimplefe-33.c: Likewise. From-SVN: r271034
2019-05-092019-05-09 Paolo Carlini <paolo.carlini@oracle.com>Paolo Carlini1-0/+1
* Fix last ChangeLog entry. From-SVN: r271033
2019-05-09re PR preprocessor/90382 (ICE in linemap_macro_map_loc_to_exp_point, at ↵Paolo Carlini4-7/+18
libcpp/line-map.c:1061) /cp 2019-05-09 Paolo Carlini <paolo.carlini@oracle.com> PR c++/90382 Revert: 2018-04-26 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (grokdeclarator): Fix value assigned to typespec_loc, use min_location. /testsuite 2019-05-09 Paolo Carlini <paolo.carlini@oracle.com> PR c++/90382 2018-04-26 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/diagnostic/trailing1.C: New. From-SVN: r271032
2019-05-09re PR tree-optimization/90395 (ICE: verify_flow_info failed (error: BB 2 ↵Richard Biener4-0/+24
cannot throw but has an EH edge)) 2019-05-09 Richard Biener <rguenther@suse.de> PR tree-optimization/90395 * tree-ssa-forwprop.c (pass_forwprop::execute): Do not rewrite vector stores that throw internally. * gcc.dg/torture/pr90395.c: New testcase. From-SVN: r271031
2019-05-09Clean up MPX-related stuff: CIF_CHKPThomas Schwinge2-4/+2
..., which was forgotten in recent r268844. gcc/ * cif-code.def (CHKP): Remove. From-SVN: r271029
2019-05-09[PR89221] Continue to default to '--disable-frame-pointer' for x86 GNU systemsThomas Schwinge3-4/+11
The recent trunk r270914 for PR89221 "--enable-frame-pointer does not work as intended" fixed a scripting defect in the x86 '--enable-frame-pointer' handling. This has the side effect that, for example, for '--target=i686-gnu' this is now enabled by default: 'USE_IX86_FRAME_POINTER=1' is added to 'tm_defines'. Given that it's highly unlikely that anyone would now suddenly want '--enable-frame-pointer' as the default for any kind of GNU system, I'm changing the default back for GNU systems, to match that of a 'target_os' of 'linux* | darwin[8912]*'. gcc/ PR target/89221 * configure.ac (--enable-frame-pointer): Disable by default for GNU systems. * configure: Regenerate. From-SVN: r271028
2019-05-09Daily bump.GCC Administrator1-1/+1
From-SVN: r271026
2019-05-09[RS6000] PR89271, gcc.target/powerpc/vsx-simode2.cAlan Modra5-36/+145
This patch makes a number of corrections to rs6000_register_move_cost, adds a new register union class, GEN_OR_VSX_REGS, and adjusts insn alternative costs to suit. The patch initially just corrected register move cost when direct moves are available, but that resulted in regressions. Inspection of those regressions showed ALL_REGS being used as the register allocno class, which isn't ideal. gcc/doc/tm.texi says: "You should define a class for the union of two classes whenever some instruction allows both classes". Thus, define GEN_OR_VSX_REGS for the register allocator. (IRA wants to use the union of two register classes when the costs of the classes are below memory cost, which happens more often with the low direct move cost.) As per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89271#c11 we ought to be returning the minimal cost for union classes. That can be done by rs6000_register_move_cost testing for vsx first, where the number of regs for a given mode might be smaller than the same mode in gprs, and changing the LINK_OR_CTR_REGS case to exclude SPEC_OR_GEN_REGS and NON_FLOAT_REGS. I removed the VECTOR_MEM_VSX_P test since that leads to silly results for scalar mode moves between altivec and float when TARGET_VSX. eg. rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=FLOAT_REGS rs6000_register_move_cost:, ret=16, mode=DF, from=FLOAT_REGS, to=ALTIVEC_REGS rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=VSX_REGS The patch also fixes wrong results for moves within and between any of the non-gpr, non-vsx special reg classes. The comment about "moving between two similar registers is just one instruction" is false. We can't move lr to ctr directly, for example. I believe the intent of the "reg_classes_intersect_p (to, from)" was to cover moves within float or altivec, so I moved that test inside the code handling vsx, and made sure the intersection wasn't anything besides vsx by masking off everything else. Masking isn't strictly necessary at the moment, but would be if we create a GEN_OR_ALTIVEC_REGS class some time in the future. TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS is needed for rs6000 in order to fix the 20% cactus_adm spec regression when using GEN_OR_VSX_REGS as an allocno class. It is similar to the aarch64 version but without any selection by regno mode if the best class is a union class. PR target/89271 * config/rs6000/rs6000.h (enum reg_class, REG_CLASS_NAMES), (REG_CLASS_CONTENTS): Add GEN_OR_VSX_REGS class. * config/rs6000/rs6000.c (rs6000_register_move_cost): Correct cost for general <-> vsx when direct moves are available. Cost union classes at minimal cost for any reg in the class. Correct calculation for moves between vsx, float, and altivec. Don't return a low cost for moves between special regs. Don't use hard coded register numbers. (TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): Define. (rs6000_ira_change_pseudo_allocno_class): New function. * config/rs6000/rs6000.md (movsi_internal1, mov<mode>_internal), (movdi_internal32, movdi_internal64): Remove '*' from vsx register alternatives. (movsi_internal1): Don't disparage vector alternatives. (mov<mode>_internal): Likewise, excepting alternative that will be split. * config/rs6000/vsx.md (vsx_splat_<mode>_reg): Don't disparage we <- b alternative. From-SVN: r271022
2019-05-08compiler: avoid copy for string([]byte) conversion used in string comparisonCherry Zhang5-6/+148
If a string([]byte) conversion is used immediately in a string comparison, we don't need to copy the backing store of the byte slice, as the string comparison doesn't hold any reference to it. Instead, just create a string header from the byte slice and pass it for comparison. A new type of expression, String_value_expression, is introduced, for constructing string headers. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170894 * go.dg/cmpstring.go: New test. From-SVN: r271021
2019-05-08libgo: add Debugging section to READMEIan Lance Taylor1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176001 From-SVN: r271019
2019-05-08re PR fortran/90351 (-fc-prototypes does not dump prototypes for external ↵Thomas Koenig6-26/+150
procedures) 2019-05-08 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/90351 PR fortran/90329 * gfortran.dg/dump-parse-tree.c: Include version.h. (gfc_dump_external_c_prototypes): New function. (get_c_type_name): Select "char" as a name for a simple char. Adjust to handling external functions. Also handle complex. (write_decl): Add argument bind_c. Adjust for dumping of external procedures. (write_proc): Likewise. (write_interop_decl): Add bind_c argument to call of write_proc. * gfortran.h: Add prototype for gfc_dump_external_c_prototypes. * lang.opt: Add -fc-prototypes-external flag. * parse.c (gfc_parse_file): Move dumping of BIND(C) prototypes. Call gfc_dump_external_c_prototypes if option is set. * invoke.texi: Document -fc-prototypes-external. From-SVN: r271018
2019-05-08compiler: generate memmove for non-pointer slice copyIan Lance Taylor3-56/+134
The builtin copy function is lowered to runtime functions slicecopy, stringslicecopy, or typedslicecopy. The first two are basically thin wrappers of memmove. Instead of making a runtime call, we can just use __builtin_memmove. This gives the compiler backend opportunities for further optimizations. Move the lowering of builtin copy function to flatten phase for the ease of rewriting. Also do this optimization for the copy part of append(s1, s2...). Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170005 From-SVN: r271017
2019-05-08runtime: use builtin memmove directlyCherry Zhang3-1/+14
We can use the intrinsic memmove directly, without going through C. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170004 * go-gcc.cc (Gcc_backend::Gcc_backend): Define memmove builtin. From-SVN: r271016
2019-05-08[C++ PATCH] Kill DECL_SAVED_FUNCTION_DATANathan Sidwell8-90/+61
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00377.html Kill DECL_SAVED_FUNCTION_DATA . * cp-tree.h (language_function): Remove x_auto_return_pattern. (current_function_auto_return_pattern): Delete. (lang_decl_fn): Replace saved_language_function with saved_auto_return type. (DECL_SAVED_FUNCTION_DATA): Delete. (DECL_SAVED_AUTO_RETURN_TYPE): New. (FNDECL_USED_AUTO): Correct documentation. * decl.c (duplicate_decls): Adjust AUTO return handling. (start_preparsed_function): Replace current_function_auto_return_pattern with DECL_SAVED_AUTO_RETURN_TYPE. Remove DECL_SAVED_FUNCTION_DATA zapping. (finish_function): Likewise. (save_function_data): Delete. (fndecl_declared_return_type): Reimplement. * mangle.c (write_unqualified_name): Use DECL_SAVED_AUTO_RETURN_TYPE. * method.c (make_thunk, make_alias_for): Likewise. * parser.c (cp_parser_jump_statement): Likewise. * pt.c (do_auto_deduction): Likewise. * typeck.c (check_return_expr): Likewise. From-SVN: r271015
2019-05-08compiler: remove trailing spacesIan Lance Taylor6-15/+15
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175557 From-SVN: r271014