aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-11-11Bump minimum MPFR version to 3.1.0Janne Blomqvist7-44/+25
Bump the minimum MPFR version to 3.1.0, released 2011-10-03. With this requirement one can still build GCC with the operating system provided MPFR on old but still supported operating systems like SLES 12 (MPFR 3.1.2) or RHEL/CentOS 7.x (MPFR 3.1.1). This allows removing some code in the Fortran frontend, as well as fixing PR 91828. ChangeLog: 2019-11-11 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/91828 * configure.ac: Bump minimum MPFR to 3.1.0, recommended to 3.1.6+. * configure: Regenerated. gcc/ChangeLog: 2019-11-11 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/91828 * doc/install.texi: Document that the minimum MPFR version is 3.1.0. gcc/fortran/ChangeLog: 2019-11-11 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/91828 * simplify.c (gfc_simplify_fraction): Remove fallback path for MPFR < 3.1.0. From-SVN: r278058
2019-11-11[ARC] Fix movsi_ne pattern.Claudiu Zissulescu4-11/+72
The movsi_ne variants are in a wrong order, leading to wrong computation of the internal attribute "cond". Hence, to errors when outputting annul-true or annul-false instructions. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> Shahab Vahedi <shahab@synopsys.com> * config/arc/arc.md (movsi_ne): Reorder instruction variants. testsuite/ xxxx-xx-xx Shahab Vahedi <shahab@synopsys.com> * gcc.target/arc/delay-slot-limm.c: New test. From-SVN: r278057
2019-11-11[ARC] Fix legitimize pic address.Claudiu Zissulescu4-0/+49
There are cases when an pic address gets complicated, and it needs to be resolved via force_reg function found in prepare_move_operands. When this happens, we need to disambiguate the pic address and re-legitimize it. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (arc_legitimize_pic_address): Consider UNSPECs as well, if interesting recover the symbol and re-legitimize the pic address. gcc/testsuite/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/pic-2.c: New file. From-SVN: r278056
2019-11-11Fix commit for PR fortran/92142 - CFI_setpointer corrupts descriptorTobias Burnus2-1/+8
2019-11-11 Tobias Burnus <tobias@codesourcery.com> Mark Eggleston <mark.eggleston@codethink.com> PR fortran/92142 * gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.f90: Correct dg-additional-sources. Co-Authored-By: Mark Eggleston <mark.eggleston@codethink.com> From-SVN: r278055
2019-11-11Relax lto-dump.o dependency.Martin Liska2-1/+6
2019-11-11 Martin Liska <mliska@suse.cz> * Make-lang.in: Relax dependency of lto-dump.o to LTO_OBJS which will allow faster linking (mainly with LTO). From-SVN: r278054
2019-11-11Sort debug counter names.Martin Liska2-7/+13
2019-11-11 Martin Liska <mliska@suse.cz> * dbgcnt.def (DEBUG_COUNTER): Sort counters alphabetically. From-SVN: r278053
2019-11-11Update link to "Why not LGPL".Gerald Pfeifer2-2/+6
* doc/xml/gnu/gpl-3.0.xml: Adjust link to "Why not LGPL". From-SVN: r278051
2019-11-11[vect]Account for epilogue's peeling for gaps when checking if we have enoughAndre Vieira4-1/+59
niters for epilogue gcc/ChangeLog: 2019-11-11 Andre Vieira <andre.simoesdiasvieira@arm.com> * tree-vect-loop-manip.c (vect_do_peeling): Take epilogue gaps into account when checking if there are enough iterations to vectorize epilogue. gcc/testsuite/ChangeLog: 2019-11-11 Andre Vieira <andre.simoesdiasvieira@arm.com> * gcc.dg/vect/vect-reduc-epilogue-gaps.c: New test. From-SVN: r278049
2019-11-11PR fortran/92142 - CFI_setpointer corrupts descriptorJosé Rui Faustino de Sousa6-9/+97
2019-11-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> libgfortran/ PR fortran/92142 * runtime/ISO_Fortran_binding.c (CFI_setpointer): Don't override descriptor attribute; with -fcheck, check that it is a pointer. gcc/testsuite/ PR fortran/92142 * gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.c: New. * gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.f90: New. * gcc/testsuite/gfortran.dg/ISO_Fortran_binding_10.c: Correct upper bounds for case 0. From-SVN: r278048
2019-11-11Fix OpenACC directives nesting in 'gfortran.dg/goacc/common-block-1.f90', ↵Thomas Schwinge3-2/+10
'gfortran.dg/goacc/common-block-2.f90' gcc/testsuite/ * gfortran.dg/goacc/common-block-1.f90: Fix OpenACC directives nesting. * gfortran.dg/goacc/common-block-2.f90: Likewise. From-SVN: r278047
2019-11-11Fortran] Support absent optional args with use_device_{ptr,addr}Tobias Burnus15-48/+270
2019-11-11 Tobias Burnus <tobias@codesourcery.com> Kwok Cheung Yeung <kcy@codesourcery.com> gcc/ * langhooks-def.h (LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT): Renamed from LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT; update define. (LANG_HOOKS_DECLS): Rename also here. * langhooks.h (lang_hooks_for_decls): Rename omp_is_optional_argument to omp_check_optional_argument; take additional bool argument. * omp-general.h (omp_check_optional_argument): Likewise. * omp-general.h (omp_check_optional_argument): Likewise. * omp-low.c (lower_omp_target): Update calls; handle absent Fortran optional arguments with USE_DEVICE_ADDR/USE_DEVICE_PTR. gcc/fortran/ * trans-expr.c (gfc_conv_expr_present): Check for DECL_ARTIFICIAL for the VALUE hidden argument avoiding -fallow-underscore issues. * trans-decl.c (create_function_arglist): Also set GFC_DECL_OPTIONAL_ARGUMENT for per-value arguments. * f95-lang.c (LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT): Renamed from LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT; point to gfc_omp_check_optional_argument. * trans.h (gfc_omp_check_optional_argument): Subsitutes gfc_omp_is_optional_argument declaration. * trans-openmp.c (gfc_omp_is_optional_argument): Make static. (gfc_omp_check_optional_argument): New function. libgomp/ * testsuite/libgomp.fortran/use_device_ptr-optional-1.f90: Extend. * testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: New. Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com> From-SVN: r278046
2019-11-11Torture testing: 'libgomp.fortran/target9.f90'Thomas Schwinge2-0/+3
libgomp/ * testsuite/libgomp.fortran/target9.f90: Specify 'dg-do run'. From-SVN: r278045
2019-11-11Torture testing: 'libgomp.fortran/use_device_addr-3.f90', ↵Thomas Schwinge4-0/+13
'libgomp.fortran/use_device_addr-4.f90', 'libgomp.fortran/use_device_ptr-1.f90' libgomp/ * testsuite/libgomp.fortran/use_device_addr-3.f90: Specify 'dg-do run'. * testsuite/libgomp.fortran/use_device_addr-4.f90: Likewise. * testsuite/libgomp.fortran/use_device_ptr-1.f90: Likewise. From-SVN: r278044
2019-11-11[PR87833] x86: Put -fPIC and -shared the last to create offload imageH.J. Lu2-2/+9
On x86, since -fPIC and -shared should be used to create offload image, we put them the last to properly create offload image. 2019-11-11 H.J. Lu <hjl.tools@gmail.com> PR target/87833 * config/i386/intelmic-mkoffload.c (prepare_target_image): Put -fPIC and -shared the last to create offload image. From-SVN: r278041
2019-11-11Assert 'offset2' instead of 'offset' in ↵Thomas Schwinge2-2/+5
'gcc/gimplify.c:gimplify_scan_omp_clauses' ... to fix a long-time typo/copy'n'past-o. gcc/ * gimplify.c (gimplify_scan_omp_clauses): Assert 'offset2' instead of 'offset'. From-SVN: r278038
2019-11-11[build] Properly track GCC language configure fragmentsThomas Schwinge4-5/+20
The 'gcc/configure' script sources all 'gcc/*/config-lang.in' files, but fails to emit such dependency information into the build machinery. That means, currently, when something gets changed in a 'gcc/*/config-lang.in' file, this is not noticed, and doesn't propagate through the build machinery. Handling of configure fragments is modelled in the same way as it already exists for Makefile fragments. gcc/ * Makefile.in (LANG_CONFIGUREFRAGS): Define. (config.status): Use/depend on it. * configure.ac (all_lang_configurefrags): Track, 'AC_SUBST'. * configure: Regenerate. From-SVN: r278035
2019-11-11rs6000: Refine small loop unroll in loop_unroll_adjust hookJiufu Guo6-23/+59
In this patch, loop unroll adjust hook is introduced for powerpc. We can do target related heuristic adjustment in this hook. In this patch, -funroll-loops is enabled for small loops at O2 and above with an option -munroll-small-loops to guard the small loops unrolling, and it works fine with -flto. gcc/ 2019-11-11 Jiufu Guo <guojiufu@linux.ibm.com> PR tree-optimization/88760 * gcc/config/rs6000/rs6000.opt (-munroll-only-small-loops): New option. * gcc/common/config/rs6000/rs6000-common.c (rs6000_option_optimization_table) [OPT_LEVELS_2_PLUS_SPEED_ONLY]: Turn on -funroll-loops and -munroll-only-small-loops. [OPT_LEVELS_ALL]: Turn off -fweb and -frename-registers. * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove set of PARAM_MAX_UNROLL_TIMES and PARAM_MAX_UNROLLED_INSNS. Turn off -munroll-only-small-loops for explicit -funroll-loops. (TARGET_LOOP_UNROLL_ADJUST): Add loop unroll adjust hook. (rs6000_loop_unroll_adjust): Define it. Use -munroll-only-small-loops. gcc.testsuite/ 2019-11-11 Jiufu Guo <guojiufu@linux.ibm.com> PR tree-optimization/88760 * gcc.dg/pr59643.c: Update back to r277550. From-SVN: r278034
2019-11-11[rs6000] Make load cost a bit more in vectorization costKewen Lin2-33/+44
To align with rs6000_insn_cost costing more for load type insns, this patch is to make load insns cost more in vectorization cost function. The latency of load insns is about twice that of "simple" instructions; 2 vs. 1 on older cores, and 4 (or so) vs. 2 on newer cores. Considering that the result of load usually is used somehow later (true-dep) but store won't, we keep the store as before. The SPEC2017 performance evaluation on Power8 shows 525.x264_r +9.56%, 511.povray_r +2.08%, 527.cam4_r 1.16% gains, no significant degradation, SPECINT geomean +0.88%, SPECFP geomean +0.26%. The SPEC2017 performance evaluation on Power9 shows no significant improvement or degradation, SPECINT geomean +0.04%, SPECFP geomean +0.04%. The SPEC2006 performance evaluation on Power8 shows 454.calculix +4.41% gain but 416.gamess -1.19% and 453.povray -3.83% degradation. I looked into the two degradation bmks, the degradation were NOT due to hotspot changes by vectorization, were all side effects. SPECINT geomean +0.10%, SPECFP geomean no changed considering the degradation. gcc/ChangeLog 2019-11-11 Kewen Lin <linkw@gcc.gnu.org> * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Make scalar_load, vector_load, unaligned_load and vector_gather_load cost more to conform hardware latency and insn cost settings. From-SVN: r278033
2019-11-11Daily bump.GCC Administrator1-1/+1
From-SVN: r278032
2019-11-10[Darwin, machopic 11/n] A flag to indicate synbols should be linker-visible.Iain Sandoe2-0/+12
Some of the solution to PR71767 is incomplete, and we need finer-grained control over whether symbols need to be made linker-visible. This is a preparation patch, providing the flag. gcc/ChangeLog: 2019-11-10 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.h (MACHO_SYMBOL_FLAG_LINKER_VIS): New. (MACHO_SYMBOL_LINKER_VIS_P): New. From-SVN: r278028
2019-11-10Don't print warning when moving to static with -fno-automaticJanne Blomqvist2-9/+16
As part of PR 91413, GFortran now prints a warning when a variable is moved from the stack to static storage. However, when the user explicitly specifies that all local variables should be put in static storage with the -fno-automatic option, don't print this warning. Regtested on x86_64-pc-linux-gnu, committed as obvious. gcc/fortran/ChangeLog: 2019-11-10 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/91413 * trans-decl.c (gfc_finish_var_decl): Don't print warning when -fno-automatic is enabled. From-SVN: r278027
2019-11-10Implement D1957R0, T* to bool should be considered narrowing.Jason Merrill3-38/+24
This paper was delayed until the February meeting in Prague so that we could get a better idea of what the impact on existing code would actually be. To that end, I'm implementing it now. * typeck2.c (check_narrowing): Treat pointer->bool as a narrowing conversion with -std=c++2a. From-SVN: r278026
2019-11-10re PR fortran/92123 ([F2018/array-descriptor] Scalar allocatable/pointer ↵Paul Thomas7-16/+109
with array descriptor (via bind(C)): ICE with select rank or error scalar variable with POINTER or ALLOCATABLE in procedure with BIND(C) is not yet supported) 2019-11-10 Paul Thomas <pault@gcc.gnu.org> PR fortran/92123 *decl.c (gfc_verify_c_interop_param): Remove error asserting that pointer or allocatable variables in a bind C procedure are not supported. Delete some trailing spaces. * trans-stmt.c (trans_associate_var): Correct the attempt to treat scalar pointer or allocatable temporaries as if they are array descriptors. 2019-11-10 Paul Thomas <pault@gcc.gnu.org> PR fortran/92123 * gfortran.dg/bind_c_procs_3.f90 : New test. * gfortran.dg/ISO_Fortran_binding_15.c : New test. * gfortran.dg/ISO_Fortran_binding_15.f90 : Additional source. From-SVN: r278025
2019-11-10[LRA] Do not use eliminable registers for spillingKwok Cheung Yeung2-0/+7
The liveness of eliminable hard registers is not tracked by LRA between basic blocks, so they should not be used as spill registers as LRA may decide to allocate them to pseudos while the spilled value is still live. 2019-11-10 Kwok Cheung Yeung <kcy@codesourcery.com> gcc/ * lra-spills.c (assign_spill_hard_regs): Do not spill into registers in eliminable_regset. From-SVN: r278024
2019-11-10Manually CSE sreal frequency calculationsJan Hubicka2-12/+22
* ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time): Take edge frequency as parameter rather than computing it by itself. (big_speedup_p, edge_badness): Manually CSE sreal frequency calculations. From-SVN: r278023
2019-11-10Short circuit case where profiles are same.Jan Hubicka2-0/+7
* profile-count.c (profile_count::to_sreal_scale): Short circuit case where profiles are same. From-SVN: r278022
2019-11-10* cgraph.c (cgraph_edge::maybe_hot_p): Do not use sreal_frequency.Jan Hubicka2-6/+14
From-SVN: r278021
2019-11-10ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipa edge args ↵Jan Hubicka2-0/+26
summaries of inlined edge unless... * ipa-prop.c (ipa_propagate_indirect_call_infos): Remove ipa edge args summaries of inlined edge unless it holds info about described reference. From-SVN: r278020
2019-11-10Switch www.hboehm.info to httpsGerald Pfeifer2-1/+5
* doc/xml/manual/using.xml: Switch www.hboehm.info to https. From-SVN: r278019
2019-11-10rs6000: Allow any CC mode in movccSegher Boessenkool2-7/+15
Sometimes combine wants to do a move in CCFPmode, but we don't currently handle moves in any CC mode other than CCmode. Fix that oversight. * config/rs6000/rs6000.md (CC_any): New mode iterator. (*movcc_internal1): Rename to... (*movcc_<mode> for CC_any): ... this. Support moves of all CC modes. From-SVN: r278017
2019-11-10cgraph.h (struct cgraph_node): Add ipcp_clone flag.Jan Hubicka8-54/+118
* cgraph.h (struct cgraph_node): Add ipcp_clone flag. (cgraph_node::create_virtual_clone): Copy it. * ipa-cp.c (ipcp_versionable_function_p): Watch for missing summaries. (ignore_edge_p): If caller has ipa-cp disabled, skip the edge, too. (ipcp_verify_propagated_values): Do not verify nodes where ipcp is disabled. (propagate_constants_across_call): If callee is not analyzed, give up. (propagate_constants_topo): Lower to bottom latties of all callees of functions with ipa-cp disabled. (ipcp_propagate_stage): Skip functions with ipa-cp disabled. (cgraph_edge_brings_value_p): Check for availability first. (create_specialized_node): Set ipcp_clone. (ipcp_store_bits_results): Check that info is present. * ipa-fnsummary.c (evaluate_properties_for_edge): Do not analyze thunks. (ipa_call_context::duplicate_from, ipa_call_context::equal_to): Be conservative when callee summary is missing. (remap_edge_summaries): Lookup call summary only when needed. * ipa-icf.c (sem_function::param_used_p): Be ready for missing summary. * ipa-prpo.c (ipa_alloc_node_params, ipa_initialize_node_params): Use get_create. (ipa_analyze_node): Use get_create. (propagate_controlled_uses): Do not propagate when function is not analyzed. (ipa_propagate_indirect_call_infos): Remove summary of inline clone. (ipa_read_node_info): Use get_create. * ipa-prop.h (IPA_NODE_REF): Use get. (IPA_NODE_REF_GET_CREATE): New. From-SVN: r278016
2019-11-10Daily bump.GCC Administrator1-1/+1
From-SVN: r278013
2019-11-09ipa-fnsummary.c (evaluate_properties_for_edge): Call IPA_NODE_REF on ↵Jan Hubicka4-5/+17
function symbol. * ipa-fnsummary.c (evaluate_properties_for_edge): Call IPA_NODE_REF on function symbol. * gcc.dg/tree-ssa/pr46076.c: Make tested code hot. From-SVN: r278009
2019-11-09tree.c (fld_incomplete_type_of): Clear TYPE_FINAL_P, TYPE_EMPTY_P, ↵Jan Hubicka2-1/+17
ENUM_IS_OPAQUE and ENUM_IS_SCOPED. * tree.c (fld_incomplete_type_of): Clear TYPE_FINAL_P, TYPE_EMPTY_P, ENUM_IS_OPAQUE and ENUM_IS_SCOPED. (free_lang_data_in_binfo): Clear TREE_PUBLIC in BINFO (free_lang_data_in_type): Clear ENUM_IS_OPAQUE and ENUM_IS_SCOPED. From-SVN: r278008
2019-11-09ipa-inline-analysis.c (do_estimate_growth_1): Add support for capping the ↵Jan Hubicka4-67/+126
growth cumulated. * ipa-inline-analysis.c (do_estimate_growth_1): Add support for capping the growth cumulated. (offline_size): Break out from ... (estimate_growth): ... here. (check_callers): Add N, OFFLINE and MIN_SIZE and KNOWN_EDGE parameters. (growth_likely_positive): Turn to ... (growth_positive_p): Re-implement. * ipa-inline.h (growth_likely_positive): Remove. (growth_positive_p): Declare. * ipa-inline.c (want_inline_small_function_p): Use growth_positive_p. (want_inline_function_to_all_callers_p): Likewise. From-SVN: r278007
2019-11-09ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix calculation ↵Jan Hubicka2-3/+11
of min_size. * ipa-fnsummary.c (ipa_call_context::estimate_size_and_time): Fix calculation of min_size. (ipa_update_overall_fn_summary): Likewise. From-SVN: r278006
2019-11-09ipa-fnsummary.c (estimate_edge_size_and_time): Do not call ↵Jan Hubicka2-16/+37
estimate_edge_devirt_benefit when not computing hints... * ipa-fnsummary.c (estimate_edge_size_and_time): Do not call estimate_edge_devirt_benefit when not computing hints; do not compute time when not asked for. (estimate_calls_size_and_time): Pass NULL hints and time when these are not computed; do not evaluate hint predicates when these are not computed. (ipa_merge_fn_summary_after_inlining): Do not re-evaluate edge frequency. From-SVN: r278005
2019-11-09re PR tree-optimization/92401 (ICE in fold_ternary_loc, at fold-const.c:11698)Jakub Jelinek4-6/+51
PR tree-optimization/92401 * gimple-match-head.c (gimple_resimplify1): Call const_unop only if res_op->code is an expression with code length 1. * gimple-match-head.c (gimple_resimplify2): Call const_binop only if res_op->code is an expression with code length 2. * gimple-match-head.c (gimple_resimplify3): Call fold_ternary only if res_op->code is an expression with code length 3. * g++.dg/opt/pr92401.C: New test. From-SVN: r278004
2019-11-09Commit symbol for external BLAS routine when translating MATMUL to *GEMM.Thomas Koenig4-0/+37
2019-11-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92321 * frontend-passes.c (call_external_blas): Commit symbol for external BLAS routine. 2019-11-09 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92321 * gfortran.dg/matmul_blas_2.f90: New test. From-SVN: r278003
2019-11-09[Darwin, machopic 10/n] Rework X86 mcount stub code.Iain Sandoe3-11/+23
When a stub is used to call the mcount function, the code is already marking it as used unconditionally; This is the only use of the so- called validation outside darwin.{h,c}. This moves the 'validation' into darwin.c which is a step towards making validation routine local. gcc/ 2019-11-09 Iain Sandoe <iain@sandoe.co.uk> * config/darwin.c (machopic_mcount_stub_name): Validate the symbol stub name when it is created. * config/i386/darwin.h (FUNCTION_PROFILER): Remove the symbol stub validation. From-SVN: r278000
2019-11-09Daily bump.GCC Administrator1-1/+1
From-SVN: r277999
2019-11-09symtab.c: Fix comment typos.Jakub Jelinek9-134/+150
* symtab.c: Fix comment typos. * cgraphunit.c: Likewise. * cgraph.h: Likewise. * cgraphclones.c: Likewise. * cgraph.c: Likewise. * varpool.c: Likewise. * tree-ssa-strlen.c: Likewise. * ipa-sra.c: Likewise. (scan_expr_access, check_all_callers_for_issues): Fix typo in a dump message. From-SVN: r277995
2019-11-09dec_char_conversion_in_assignment_4.f90: Use dg-do compile instead of dg-do run.Jakub Jelinek3-4/+8
* gfortran.dg/dec_char_conversion_in_assignment_4.f90: Use dg-do compile instead of dg-do run. * gfortran.dg/dec_char_conversion_in_data_3.f90: Likewise. From-SVN: r277994
2019-11-08[Darwin] Add include guard to darwin-protos.hIain Sandoe2-0/+9
The Darwin protos header is missing an include guard, this adds one. gcc/ChangeLog: 2019-11-08 Iain Sandoe <iain@sandoe.co.uk> * config/darwin-protos.h: Add include quard. From-SVN: r277993
2019-11-08PR c++/92215 - flawed diagnostic for bit-field with non-integral type.Marek Polacek4-0/+52
I noticed that for code like struct S { int *foo : 3; }; we generate nonsensical r.C:2:8: error: function definition does not declare parameters 2 | int *foo : 3; It talks about a function because after parsing the declspecs of 'foo' we don't see either ':' or "name :", so we think it's not a bit-field decl. So we parse the declarator and since a ctor-initializer begins with a ':', we try to parse it as a function body, generating the awful diagnostic. With this patch, we issue: r.C:2:8: error: bit-field ‘foo’ has non-integral type ‘int*’ 2 | int *foo : 3; * parser.c (cp_parser_member_declaration): Add a diagnostic for bit-fields with non-integral types. * g++.dg/diagnostic/bitfld4.C: New test. From-SVN: r277991
2019-11-08PR c++/92058 - constinit malfunction in static data member.Marek Polacek2-2/+21
* g++.dg/cpp2a/constinit15.C: New test. From-SVN: r277990
2019-11-08Modify range_operator::fold_range() and wi_fold () to return via reference.Andrew MacLeod4-419/+494
2019-11-08 Andrew MacLeod <amacleod@redhat.com> * range-op.h (range_operator::fold_range): Return result in a reference parameter instead of by value. (range_operator::wi_fold): Same. * range-op.cc (range_operator::wi_fold): Return result in a reference parameter instead of by value. (range_operator::fold_range): Same. (value_range_from_overflowed_bounds): Same. (value_range_with_overflow): Same (create_possibly_reversed_range): Same. (operator_equal::fold_range): Same. (operator_not_equal::fold_range): Same. (operator_lt::fold_range): Same. (operator_le::fold_range): Same. (operator_gt::fold_range): Same. (operator_ge::fold_range): Same. (operator_plus::wi_fold): Same. (operator_plus::op1_range): Change call to fold_range. (operator_plus::op2_range): Change call to fold_range. (operator_minus::wi_fold): Return result via reference parameter. (operator_minus::op1_range): Change call to fold_range. (operator_minus::op2_range): Change call to fold_range. (operator_min::wi_fold): Return result via reference parameter. (operator_max::wi_fold): Same. (cross_product_operator::wi_cross_product): Same. (operator_mult::wi_fold): Same. (operator_div::wi_fold): Same. (operator_div op_floor_div): Fix whitespace. (operator_exact_divide::op1_range): Change call to fold_range. (operator_lshift::fold_range): Return result via reference parameter. (operator_lshift::wi_fold): Same. (operator_rshift::fold_range): Same. (operator_rshift::wi_fold): Same. (operator_cast::fold_range): Same. (operator_cast::op1_range): Change calls to fold_range. (operator_logical_and::fold_range): Return result via reference. (wi_optimize_and_or): Adjust call to value_range_with_overflow. (operator_bitwise_and::wi_fold): Return result via reference. (operator_logical_or::fold_range): Same. (operator_bitwise_or::wi_fold): Same. (operator_bitwise_xor::wi_fold): Same. (operator_trunc_mod::wi_fold): Same. (operator_logical_not::fold_range): Same. (operator_bitwise_not::fold_range): Same. (operator_bitwise_not::op1_range): Change call to fold_range. (operator_cst::fold_range): Return result via reference. (operator_identity::fold_range): Same. (operator_abs::wi_fold): Same. (operator_absu::wi_fold): Same. (operator_negate::fold_range): Same. (operator_negate::op1_range): Change call to fold_range. (operator_addr_expr::fold_range): Return result via reference. (operator_addr_expr::op1_range): Change call to fold_range. (operator_pointer_plus::wi_fold): Return result via reference. (operator_pointer_min_max::wi_fold): Same. (operator_pointer_and::wi_fold): Same. (operator_pointer_or::wi_fold): Same. (range_op_handler): Change call to fold_range. (range_cast): Same. * tree-vrp.c (range_fold_binary_symbolics_p): Change call to fold_range. (range_fold_unary_symbolics_p): Same. (range_fold_binary_expr): Same. (range_fold_unary_expr): Same. From-SVN: r277979
2019-11-08* arith.c (character2representation): Change i type to size_t.Jakub Jelinek2-7/+11
From-SVN: r277978
2019-11-08Use correct vector type in neutral_op_for_slp_reductionRichard Sandiford2-13/+25
With the new reduction vectype handling, neutral_op_for_slp_reduction needs to know whether the caller is using STMT_VINFO_REDUC_VECTYPE (for an epilogue value) or STMT_VINFO_VECTYPE (for a PHI argument). This fixes various gcc.target/aarch64/sve/slp_* tests. 2019-11-08 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-loop.c (neutral_op_for_slp_reduction): Take the vector type as an argument rather than reading it from the stmt_vec_info. (vect_create_epilog_for_reduction): Update accordingly. (vectorizable_reduction): Likewise. (vect_transform_cycle_phi): Likewise. From-SVN: r277977
2019-11-08rs6000: Fix branch_comparison_operatorSegher Boessenkool2-4/+14
* config/rs6000/predicates.md (branch_comparison_operator): Allow only the comparison codes that make sense for the mode used, and only the codes that can be done with a single branch instruction. From-SVN: r277976