aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2019-11-04Handle VR_UNDEFINED in value_range_base::normalize_addresses().Aldy Hernandez2-0/+8
From-SVN: r277791
2019-11-04Implement debugging functions for assert_info's.Aldy Hernandez2-0/+44
From-SVN: r277790
2019-11-04ipa-inline-transform.c: Include ipa-utils.hJan Hubicka4-0/+22
* ipa-inline-transform.c: Include ipa-utils.h (inline_call): Set thunk_expansion flag. * ipa-utils.h (thunk_expansion): Declare. * ipa-devirt.c (thunk_expansion): New global var. (devirt_node_removal_hook): Do not invalidate cache while doing thunk expansion. From-SVN: r277789
2019-11-04SLP: Initialize variable to fix bootstrap after r277784.Tamar Christina2-1/+8
This initializes the rstmt variable with NULL and adds an assert to check that a value has been given by one of the if cases before use. This fixes the bootstrap failure due to -Werror. Committed under the gcc obvious rule. gcc/ChangeLog: * tree-vect-slp.c (vectorize_slp_instance_root_stmt): Initialize rstmt. From-SVN: r277788
2019-11-04re PR testsuite/92302 (gcc.target/sparc/sparc-ret-3.c FAILs)Eric Botcazou2-1/+6
PR testsuite/92302 * gcc.target/sparc/sparc-ret-3.c: Accept more registers in address. From-SVN: r277787
2019-11-04PR tree-optimization/92349 - ICE in -Warray-bounds of a VLA memberMartin Sebor4-1/+127
gcc/testsuite/ChangeLog: PR tree-optimization/92349 * gcc.dg/Warray-bounds-50.c: New test. gcc/ChangeLog: PR tree-optimization/92349 * tree-vrp.c (vrp_prop::check_array_ref): Avoid assuming struct memebers have constant sizes. From-SVN: r277786
2019-11-04[vect] Clean up orig_loop_vinfo from vect_analyze_loopAndre Vieira4-16/+16
gcc/ChangeLog: 2019-11-04 Andre Vieira <andre.simoesdiasvieira@arm.com> * tree-vect-loop.c (vect_analyze_loop): Remove orig_loop_vinfo parameter. * tree-vectorizer.h (vect_analyze_loop): Update declaration. * tree-vectorizer.c (try_vectorize_loop_1): Update calls to vect_analyze_loop. From-SVN: r277785
2019-11-04[SLP] SLP vectorization: vectorize vector constructorsJoel Hutton7-3/+243
gcc/ChangeLog: 2019-11-04 Joel Hutton <Joel.Hutton@arm.com> * expr.c (store_constructor): Modify to handle single element vectors. * tree-vect-slp.c (vect_analyze_slp_instance): Add case for vector constructors. (vect_slp_check_for_constructors): New function. (vect_slp_analyze_bb_1): Call new function to check for vector constructors. (vectorize_slp_instance_root_stmt): New function. (vect_schedule_slp): Call new function to vectorize root stmt of vector constructors. * tree-vectorizer.h (SLP_INSTANCE_ROOT_STMT): New field. gcc/testsuite/ChangeLog: 2019-11-04 Joel Hutton <Joel.Hutton@arm.com> * gcc.dg/vect/bb-slp-40.c: New test. * gcc.dg/vect/bb-slp-41.c: New test. From-SVN: r277784
2019-11-04re PR tree-optimization/92345 (ICE in vec<_stmt_vec_info*, va_heap, ↵Richard Biener4-5/+39
vl_embed>::space (vect_get_and_check_slp_defs)) 2019-11-04 Richard Biener <rguenther@suse.de> PR tree-optimization/92345 * tree-vect-loop.c (vect_is_simple_reduction): Return whether we produced a reduction chain. (vect_analyze_scalar_cycles_1): Do not add reduction chains to LOOP_VINFO_REDUCTIONS. * gcc.dg/torture/pr92345.c: New testcase. From-SVN: r277782
2019-11-04cgraphclones.c (cgraph_node::create_version_clone): Do not duplicate summaries.Jan Hubicka8-43/+92
* cgraphclones.c (cgraph_node::create_version_clone): Do not duplicate summaries. * ipa-fnsummary.c (ipa_fn_summary_alloc): Allocate size summary first. (ipa_fn_summary_t::duplicate): Use get instead of get_create to access call summaries. (dump_ipa_call_summary): Be ready for missing edge summaries. (analyze_function_body): Use get instead of get_create to access edge summary. (estimate_calls_size_and_time): Do not access summaries of inlined edges; sanity check they are missing. (ipa_call_context::estimate_size_and_time): Use get instead of get_create to access node summary. (inline_update_callee_summaries): Do not update depth of inlined edge. (ipa_merge_fn_summary_after_inlining): Remove inline edge from growth caches. (ipa_merge_fn_summary_after_inlining): Use get instead of get_create. * ipa-fnsummary.h (ipa_remove_from_growth_caches): Declare. * ipa-inline-analyssi.c (edge_growth_cache): Turn to fast summary. (initialize_growth_caches): Update. (do_estimate_edge_time): Remove redundant copy of context. (ipa_remove_from_growth_caches): New function. * ipa-inline.c (flatten_function): Update overall summary only when optimizing. (inline_to_all_callers): Update overall summary of function inlined to. * ipa-inline.h (edge_growth_cache): Turn to fast summary. * symbol-summary.h (call_summary_base): Set m_initialize_when_cloning to false. From-SVN: r277780
2019-11-04system.h: Include malloc.h if INCLUDE_MALLOC_H and HAVE_MALLINFO.Richard Biener3-3/+12
2019-11-04 Richard Biener <rguenther@suse.de> * system.h: Include malloc.h if INCLUDE_MALLOC_H and HAVE_MALLINFO. * ggc-common.c: Remove inclusion of malloc.h, define INCLUDE_MALLOC_H. From-SVN: r277779
2019-11-04* ggc-common.c: Include system.h before malloc.h.David Edelsohn2-1/+5
From-SVN: r277778
2019-11-04pass --enable-obsolete down to gcc/configure for auto-build.hAlexandre Oliva4-4/+34
Configuring GCC for obsolete targets works as long as build = host. When it isn't, --enable-obsolete is not passed down to the additional build configure started by gcc/configure, used to generate auto-build.h. The build configure fails and we end up without a auto-build.h, but the host configure proceeds, so we only get a fatal failure much later, when make realizes auto-build.h is not there and there's no rule to create it. This patch gets the host configure to fail when the build configure does, leaving the temporary build configure dir behind for investigation. It also arranges for --eanble-obsolete to be passed down to the build configure. Alas, the latter triggered a warning in the build configure because --enable-obsolete is not a recognized configure option. That's not reported in the host configure because of the --disable-option-checking passed by the top-level configure, so I arranged for that to be passed down to the build configure as well. Finally, since my initial suspicion when investigating this failure was that auto-build.h had been removed after configuration and there was no rule to rebuild it, I'm adding rules to gcc/Makefile to get it created or updated as needed. Since it is configure that creates it, as run by e.g. config.status --recheck, and config.status is created after auto-build.h, I've made config.status depend on auto-build.h, and added a dummy rule to create auto-build.h. This would normally not be enough to create a header when needed, but since Makefile depends on config.status, and make first updates Makefile, it ends up working, as long as nothing else that Makefile depends on requires auto-build.h but not config.status. The config.status dependency and the auto-build.h rule are only enabled in the cases in which auto-build.h is actually used, namely when build != host. for gcc/ChangeLog * configure.ac: Pass --enable-obsolete=* and --enable-option-checking=* down to build configure, and fail if it fails. AC_SUBST HAVE_AUTO_BUILD. * configure: Rebuild. * Makefile.in [HAVE_AUTO_BUILD] (auto-build.h): New rule. [HAVE_AUTO_BUILD] (config.status): Depend on auto-build.h. From-SVN: r277777
2019-11-04MSP430: Add -mtiny-printf optionJozef Lawrynowicz10-4/+94
2019-11-04 Jozef Lawrynowicz <jozef.l@mittosystems.com> gcc/ * config.in: Regenerate. * config/msp430/msp430.c (msp430_option_override): Emit an error if -mtiny-printf is used without GCC being configured with --enable-newlib-nano-formatted-io. * config/msp430/msp430.h (LINK_SPEC): Pass "--wrap puts --wrap printf" when -mtiny-printf is used. * config/msp430/msp430.opt: Document -mtiny-printf. * configure: Regenerate. * configure.ac: Enable --enable-newlib-nano-formatted-io flag. Define HAVE_NEWLIB_NANO_FORMATTED_IO if --enable-newlib-nano-formatted-io is passed. * doc/invoke.texi: Document -mtiny-printf. gcc/testsuite/ * gcc.target/msp430/tiny-printf.c: New test. From-SVN: r277774
2019-11-04Regenerate gcc/configureJozef Lawrynowicz2-20/+12
From-SVN: r277773
2019-11-04MSP430: Add new methods of finding external MCU data fileJozef Lawrynowicz14-9/+369
MCU data file can now be specified with an environment variable or installed into a toolchain subdirectory. 2019-11-04 Jozef Lawrynowicz <jozef.l@mittosystems.com> gcc/ * config/msp430/driver-msp430.c (msp430_get_linker_devices_include_path): New spec function. * config/msp430/msp430-devices.c (msp430_dirname): New function. (extract_devices_dir_from_exec_prefix): New function. (extract_devices_dir_from_collect_gcc): New function. (msp430_check_env_var_for_devices): New function. (msp430_check_path_for_devices): Use xstrdup instead of ASTRDUP. (parse_devices_csv): Call msp430_check_env_var_for_devices if devices.csv was not found using other methods. * config/msp430/msp430-devices.h (msp430_check_env_var_for_devices): New prototype. (msp430_dirname): Likewise. * config/msp430/msp430.c (msp430_register_pre_includes): New function. * config/msp430/msp430.h (EXTRA_SPEC_FUNCTIONS): Add msp430_get_linker_devices_include_path. (TARGET_EXTRA_PRE_INCLUDES): Define. * doc/invoke.texi: Document new ways of searching for support files. gcc/testsuite/ * gcc.target/msp430/devices/csv-using-env-var.c: New test. * gcc.target/msp430/devices/csv-using-installed.c: New test. * gcc.target/msp430/devices/csv-using-option.c: New test. * gcc.target/msp430/devices/devices-main.c: New test source file. * gcc.target/msp430/devices/msp430-devices.h: New test. * gcc.target/msp430/msp430.exp (msp430_device_permutations_runtest): Add special cases for csv-using* tests. Define TESTING_HARD_DATA when running tests that use hard-coded device data. (get_installed_device_data_path): New. (msp430_hide_installed_devices_data): New. (msp430_restore_installed_devices_data): New. (msp430_test_installed_device_data): New. (msp430_install_device_data): New. From-SVN: r277772
2019-11-04re PR bootstrap/92301 (Wrong vectorizer code since r277566)Richard Biener4-0/+62
2019-11-04 Richard Biener <rguenther@suse.de> PR tree-optimization/92301 * tree-vect-stmts.c (process_use): Force reduction PHI defs live as required by epilogue generation * gcc.dg/pr92301.c: New testcase. From-SVN: r277771
2019-11-04Fix hash_operand for fields of a CONSTRUCTOR.Martin Liska2-0/+9
2019-11-04 Martin Liska <mliska@suse.cz> PR ipa/92304 * fold-const.c (operand_compare::hash_operand): Fix field hashing of CONSTRUCTOR. From-SVN: r277768
2019-11-04Come up with ggc_delete.Martin Liska5-8/+22
2019-11-04 Martin Liska <mliska@suse.cz> * ggc.h (ggc_delete): New function. * ipa-fnsummary.c (ipa_free_fn_summary): Use it. * ipa-prop.c (ipa_free_all_edge_args): Likewise. (ipa_free_all_node_params): Likewise. * ipa-sra.c (ipa_sra_analysis): Likewise. From-SVN: r277767
2019-11-04re PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)Thomas Koenig1-1/+1
2019-11-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92113 * ChangeLog: Fix PR number From-SVN: r277766
2019-11-04Daily bump.GCC Administrator1-1/+1
From-SVN: r277764
2019-11-03re PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)Thomas Koenig2-7/+20
2019-11-03 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/92133 * trans-decl.c (gfc_get_symbol_decl): If __def_init actually contains a value, put it into the read-only section. From-SVN: r277760
2019-11-03Improve effectivity of ipa_polymorphi_context cache.Jan Hubicka6-94/+383
* ipa-fnsummary.c (set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate, compute_bb_predicates, will_be_nonconstant_expr_predicate, phi_result_unknown_predicate, analyze_function_body): Pass arround params summary. (ipa_call_context::duplicate_from): New comment; only duplicate useful values. (ipa_call_context::equal_to): Only compare useful values. (remap_edge_summaries): Pass params_summary. (remap_hint_predicate): Likewise. (ipa_merge_fn_summary_after_inlining): Likewise. (inline_read_section): Initialize params summary used flags. * ipa-predicate.c (predicate::remap_after_inlining): Pass around param_summary. (add_condition): Initialized used params summary flags. * ipa-predicate.h (inline_param_summary::equals_to): Make const. (inline_param_summary::useless_p): New predicate. (remap_after_inlining, add_condition): Update prototype * ipa-prop.c (ipa_populate_param_decls): Watch overflow in move_cost. (ipa_note_param_call): Add parameter POLYMORPHIC; update params summaries. (ipa_analyze_indirect_call_uses): Update use of ipa_note_param_call. (ipa_analyze_virtual_call_uses): Likewise. (update_indirect_edges_after_inlining): Update param summaries. (ipa_print_node_params): Print used flags. (ipa_read_indirect_edge_info): Update param summareis. * ipa-prop.h (ipa_param_descriptor): Add used_by_ipa_predicates, used_by_indirect_call and used_by_polymorphic_call. (ipa_set_param_used_by_ipa_predicates, ipa_set_param_used_by_indirect_call, ipa_set_param_used_by_polymorphic_call, ipa_is_param_used_by_ipa_predicates, ipa_is_param_used_by_indirect_call, ipa_is_param_used_by_polymorphic_call): New inline functions. From-SVN: r277759
2019-11-03PR c++/88565 - enhance -Warray-bounds for C++ trailing class member arraysMartin Sebor2-0/+86
gcc/testsuite/ChangeLog: * g++.dg/warn/Warray-bounds-9.C: New test. From-SVN: r277758
2019-11-03ipa-fnsummary.c (ipa_call_context::duplicate_from): New member function.Jan Hubicka9-10/+270
* ipa-fnsummary.c (ipa_call_context::duplicate_from): New member function. (ipa_call_context::release): Add ALL parameter. (ipa_call_context::equal_to): New member function. * ipa-fnsummary.h (ipa_call_context): Add empty constructor; duplicate_form, release, equal_to and exists_p member functoins. * ipa-inline-analysis.c (node_context_cache_entry): New class. (node_context_summary): Likewise. (node_context_cache, node_context_cache_hit, node_context_cache_miss, node_context_clear): New static vars. (initialize_growth_caches): New function. (free_growth_caches): Also delete node_context_cache; output stats. (do_estimate_edge_time): Cache contexts. (reset_node_cache): New function. * ipa-inline.c (reset_edge_caches): Reset also node cache. (inline_small_functions): Initialize growth caches. * ipa-inline.h (reset_node_cache, initialize_growth_caches): Declare. * ipa-predicate.h (inline_param_summary::equal_to): New. * ipa-prop.c (ipa_agg_jf_item::equal_to): New. * ipa-prop.h (ipa_agg_jf_item): Declare equal_to member function. (ipa_agg_jump_function): Implement equal_to member function. From-SVN: r277757
2019-11-03ipa-fnsummary.c (inline_read_section): Set vector size ahead of time.Jan Hubicka2-4/+16
* ipa-fnsummary.c (inline_read_section): Set vector size ahead of time. From-SVN: r277756
2019-11-03ipa-fnsummary.c (ipa_call_context): New constructor.Jan Hubicka4-65/+125
* ipa-fnsummary.c (ipa_call_context): New constructor. (estimate_node_size_and_time): Turn to ... (ipa_call_context::estimate_size_and_time): ... this one. (ipa_call_context::release): New. * ipa-fnsummary.h (ipa_call_context): New class. (estimate_node_size_and_time): Remove. * ipa-inline-analysis.c (do_estimate_edge_time, do_estimate_edge_size, do_estimate_edge_hints): Update. From-SVN: r277755
2019-11-03config.in: Regenerate.Jan Hubicka1-0/+14
* config.in: Regenerate. * configure: Regenerate. * configure.ac: Check for mallinfo. * ggc-common.c: Include malloc.h if available; include options.h (report_heap_memory_use): New functoin. * ggc-page.c (ggc_grow): Do not print "start". * ggc.h (report_heap_memory_use): Declare. * pases.c (execute_one_pass): Report memory after IPA passes. (ipa_read_summaries_1): Likewise. (ipa_read_optimization_summaries_1): Likewise. From-SVN: r277754
2019-11-03config.in: Regenerate.Jan Hubicka10-14/+143
* config.in: Regenerate. * configure: Regenerate. * configure.ac: Check for mallinfo. * ggc-common.c: Include malloc.h if available; include options.h (report_heap_memory_use): New functoin. * ggc-page.c (ggc_grow): Do not print "start". * ggc.h (report_heap_memory_use): Declare. * pases.c (execute_one_pass): Report memory after IPA passes. (ipa_read_summaries_1): Likewise. (ipa_read_optimization_summaries_1): Likewise. * lto/lto-common.c (read_cgraph_and_symbols): Improve -Q reporting. * lto.c (lto_wpa_write_files): Likewise. From-SVN: r277753
2019-11-03Daily bump.GCC Administrator1-1/+1
From-SVN: r277749
2019-11-02typeck.c (composite_pointer_type): Add a const op_location_t& parameter and ↵Paolo Carlini16-81/+138
use it in diagnostics. /cp 2019-11-02 Paolo Carlini <paolo.carlini@oracle.com> * typeck.c (composite_pointer_type): Add a const op_location_t& parameter and use it in diagnostics. (composite_pointer_error): Likewise. (composite_pointer_type_r): Add a const op_location_t& parameter and forward it. (cp_build_binary_op): Adjust calls. (common_pointer_type): Likewise. * call.c (add_builtin_candidate): Likewise. (build_conditional_expr_1): Likewise. * cp-tree.h (composite_pointer_type): Update declaration. * typeck.c (cxx_sizeof_expr): Use cp_expr_loc_or_input_loc in permerror. (cxx_alignof_expr): Likewise. (lvalue_or_else): Likewise. /testsuite 2019-11-02 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/conversion/ptrmem9.C: Check location. * g++.dg/expr/cond2.C: Likewise. * g++.dg/warn/Waddress-1.C: Check locations. * g++.old-deja/g++.bugs/900324_02.C: Check location. * g++.old-deja/g++.jason/rfg20.C: Likewise. * g++.old-deja/g++.law/typeck1.C: Likewise. * g++.old-deja/g++.rfg/00321_01-.C: Likewise. * g++.old-deja/g++.rfg/00324_02-.C: Likewise. * g++.dg/diagnostic/alignof1.C: New. * g++.dg/expr/sizeof1.C: Check location. * g++.dg/cpp0x/rv-lvalue-req.C: Check locations. From-SVN: r277743
2019-11-02gimplify.h (omp_construct_selector_matches): Change return type to int, add ↵Jakub Jelinek14-62/+323
a new SCORES argument. * gimplify.h (omp_construct_selector_matches): Change return type to int, add a new SCORES argument. * gimplify.c (omp_construct_selector_matches): Likewise. If SCORES is non-NULL, compute scores of each construct. * omp-general.h (omp_get_context_selector): Declare. * omp-general.c (omp_maybe_offloaded, omp_context_selector_matches): Adjust omp_construct_selector_matches callers. (omp_get_context_selector): New function, moved from c-family/c-omp.c. (omp_context_compute_score): New function. (omp_resolve_declare_variant): Compute scores and decide based on that. c-family/ * c-common.h (c_omp_get_context_selector): Remove. * c-omp.c (c_omp_get_context_selector): Moved to omp-general.c and renamed to omp_get_context_selector. c/ * c-parser.c (c_finish_omp_declare_variant): Use omp_get_context_selector instead of c_omp_get_context_selector. cp/ * decl.c (omp_declare_variant_finalize_one): Use omp_get_context_selector instead of c_omp_get_context_selector. testsuite/ * c-c++-common/gomp/declare-variant-12.c: New test. From-SVN: r277742
2019-11-02re PR c++/89640 (g++ chokes on lambda with __attribute__)Jakub Jelinek5-1/+34
PR c++/89640 * parser.c (cp_parser_decl_specifier_seq): Don't parse attributes if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR. * g++.dg/cpp1z/attr-lambda1.C: New test. * g++.dg/ext/attr-lambda2.C: New test. From-SVN: r277741
2019-11-02Daily bump.GCC Administrator1-1/+1
From-SVN: r277740
2019-11-02re PR bootstrap/92314 (missing omp-device-properties', needed by ↵Jakub Jelinek8-37/+47
's-omp-device-properties-h') PR bootstrap/92314 * configure.ac: Don't look for omp-device-properties files from installed offloading compilers. Instead add tmake_file snippets for configured offloading targets and use files they generate. * Makefile.in (install): Don't depend on install-omp-device-properties. (install-omp-device-properties): Remove goal. * config/i386/t-omp-device: New file. * config/i386/t-intelmic (omp-device-properties): Remove goal. * config/nvptx/t-omp-device: New file. * config/nvptx/t-nvptx (omp-device-properties): Remove goal. * configure: Regenerated. From-SVN: r277735
2019-11-02omp-general.h (omp_context_selector_set_compare): Declare.Jakub Jelinek9-127/+475
* omp-general.h (omp_context_selector_set_compare): Declare. * omp-general.c (omp_construct_simd_compare, omp_context_selector_props_compare, omp_context_selector_set_compare, omp_context_selector_compare): New functions. (omp_resolve_declare_variant): Prune variants that are strict subset of another variant. c-family/ * c-omp.c (c_omp_mark_declare_variant): Use omp_context_selector_set_compare. testsuite/ * c-c++-common/gomp/declare-variant-6.c: Expect construct rather than constructor in diagnostic messages. * c-c++-common/gomp/declare-variant-7.c: Likewise. * c-c++-common/gomp/declare-variant-11.c: New test. From-SVN: r277734
2019-11-02PR c++/88335 - Implement P1073R3: Immediate functionsJakub Jelinek32-64/+967
PR c++/88335 - Implement P1073R3: Immediate functions c-family/ * c-common.h (enum rid): Add RID_CONSTEVAL. * c-common.c (c_common_reswords): Add consteval. cp/ * cp-tree.h (struct lang_decl_fn): Add immediate_fn_p bit. (DECL_IMMEDIATE_FUNCTION_P, SET_DECL_IMMEDIATE_FUNCTION_P): Define. (enum cp_decl_spec): Add ds_consteval. (fold_non_dependent_expr): Add another tree argument defaulted to NULL_TREE. * name-lookup.h (struct cp_binding_level): Add immediate_fn_ctx_p member. * parser.c (cp_keyword_starts_decl_specifier_p): Adjust comments for C++11 and C++20 specifiers. Handle RID_CONSTEVAL. (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): Adjust comment. (CP_PARSER_FLAGS_CONSTEVAL): New. (cp_parser_skip_balanced_tokens): New forward declaration. (cp_parser_lambda_declarator_opt): Handle ds_consteval. Set current_binding_level->immediate_fn_ctx_p before parsing parameter list if decl-specifier-seq contains consteval specifier. (cp_parser_decl_specifier_seq): Handle RID_CONSTEVAL. (cp_parser_explicit_instantiation): Diagnose explicit instantiation with consteval specifier. (cp_parser_init_declarator): For consteval or into flags CP_PARSER_FLAGS_CONSTEVAL. (cp_parser_direct_declarator): If CP_PARSER_FLAGS_CONSTEVAL, set current_binding_level->immediate_fn_ctx_p in the sk_function_parms scope. (set_and_check_decl_spec_loc): Add consteval entry, formatting fix. * call.c (build_addr_func): For direct calls to immediate functions use build_address rather than decay_conversion. (build_over_call): Evaluate immediate function invocations. * error.c (dump_function_decl): Handle DECL_IMMEDIATE_FUNCTION_P. * semantics.c (expand_or_defer_fn_1): Use tentative linkage and don't call mark_needed for immediate functions. * typeck.c (cxx_sizeof_or_alignof_expr): Likewise. Formatting fix. (cp_build_addr_expr_1): Reject taking address of immediate function outside of immediate function. * decl.c (validate_constexpr_redeclaration): Diagnose consteval vs. non-consteval or vice versa redeclaration. Use SET_DECL_IMMEDIATE_FUNCTION_P if new_decl is immediate function. (check_tag_decl): Use %qs with keyword string to simplify translation. Handle ds_consteval. (start_decl): Adjust diagnostics for static or thread_local variables in immediate functions. (grokfndecl): Call sorry_at on virtual consteval. Use %qs with keyword to string to simplify translation. Diagnose consteval main. Use SET_DECL_IMMEDIATE_FUNCTION_P for consteval. (grokdeclarator): Handle consteval. Use %qs with keyword strings to simplify translation. Use separate ifs instead of chained else if for invalid specifiers. For constinit clear constinit_p rather than constexpr_p. * constexpr.c (find_immediate_fndecl): New function. (cxx_eval_outermost_constant_expr): Allow consteval calls returning void. Diagnose returning address of immediate function from consteval evaluation. (fold_non_dependent_expr_template): Add OBJECT argument, pass it through to cxx_eval_outermost_constant_expr. (fold_non_dependent_expr): Add OBJECT argument, pass it through to fold_non_dependent_expr_template. (fold_non_dependent_init): Adjust fold_non_dependent_expr_template caller. * method.c (defaulted_late_check): Adjust diagnostics for consteval. * lambda.c (maybe_add_lambda_conv_op): Copy over DECL_DECLARED_CONSTEXPR_P and DECL_IMMEDIATE_FUNCTION_P bits from callop to both artificial functions. * init.c (build_value_init): Don't do further processing if build_special_member_call returned a TREE_CONSTANT. Formatting fix. testsuite/ * g++.dg/cpp2a/consteval1.C: New test. * g++.dg/cpp2a/consteval2.C: New test. * g++.dg/cpp2a/consteval3.C: New test. * g++.dg/cpp2a/consteval4.C: New test. * g++.dg/cpp2a/consteval5.C: New test. * g++.dg/cpp2a/consteval6.C: New test. * g++.dg/cpp2a/consteval7.C: New test. * g++.dg/cpp2a/consteval8.C: New test. * g++.dg/cpp2a/consteval9.C: New test. * g++.dg/cpp2a/consteval10.C: New test. * g++.dg/cpp2a/consteval11.C: New test. * g++.dg/cpp2a/consteval12.C: New test. * g++.dg/cpp2a/consteval13.C: New test. * g++.dg/cpp2a/consteval14.C: New test. * g++.dg/ext/consteval1.C: New test. From-SVN: r277733
2019-11-02PR c++/91369 - Implement P0784R7: constexpr newJakub Jelinek7-3/+189
PR c++/91369 - Implement P0784R7: constexpr new * cp-tree.h (CALL_FROM_NEW_OR_DELETE_P): Define. * init.c (build_new_1, build_vec_delete_1, build_delete): Set CALL_FROM_NEW_OR_DELETE_P on the CALL_EXPR to allocator functions. * constexpr.c (is_std_allocator_allocate): Only allow global replaceable allocator functions if CALL_FROM_NEW_OR_DELETE_P or in std::allocate<T>::{,de}allocate. (potential_constant_expression_1): Likewise. * g++.dg/cpp2a/constexpr-new6.C: New test. * g++.dg/cpp2a/constexpr-new7.C: New test. From-SVN: r277732
2019-11-02* gcc.dg/pr36902.c: Terminate dg-warning regexp string.Jakub Jelinek2-1/+5
From-SVN: r277730
2019-11-01PR middle-end/91679 - missing -Warray-bounds accessing a member array in a ↵Martin Sebor20-108/+1020
local buffer PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer PR middle-end/91647 - new FAILs for Warray-bounds-8 and Wstringop-overflow-3.C PR middle-end/91463 - missing -Warray-bounds accessing past the end of a statically initialized flexible array member PR middle-end/92312 - bogus -Wstringop-overflow storing into a trailing array backed by larger buffer gcc/ChangeLog: PR middle-end/91679 PR middle-end/91647 PR middle-end/91463 PR middle-end/92312 * c-family/c-pretty-print.c (direct_abstract_declarator): Print bound in zero-length arrays. * gcc/c-family/c.opt (-Wzero-length-bounds): New option. * gcc/doc/invoke.texi (-Wzero-length-bounds): Document. * gimple-match-head.c (try_conditional_simplification): Use memcpy instead of a hand-rolled loop to avoid PR 92323. * tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays with initializers. (vrp_prop::check_mem_ref): Handle declared struct objects. * tree.c (last_field): New function. (array_at_struct_end_p): Handle MEM_REF. (get_initializer_for): New helper. (component_ref_size): Add argument. Rename locals. Call get_initializer_for instead of fold_ctor_reference. Correct handling of flexible array members. * wide-int.h (generic_wide_int <storage>::sign_mask): Assert invariant. gcc/testsuite/ChangeLog: PR middle-end/91679 PR middle-end/91647 PR middle-end/91463 PR middle-end/92312 * c-c++-common/Warray-bounds-2.c: Disable VRP. Adjust expected messages. * g++.dg/warn/Warray-bounds-8.C: Remove xfails. * gcc.dg/Warray-bounds-48.c: New test. * gcc.dg/Warray-bounds-49.c: New test. * gcc.dg/Wstringop-overflow-16.c: Adjust text of expected messages. * gcc.dg/Wstringop-overflow-21.c: New test. * gcc.dg/Wzero-length-array-bounds.c: New test. * gcc.dg/pr36902.c: Remove xfail. * gcc.dg/strlenopt-57.c: Add an expected warning. From-SVN: r277728
2019-11-01Fix nodiscard test failures.Jason Merrill2-9/+9
* g++.dg/cpp2a/nodiscard-once.C: Expect nodiscard warning. * g++.dg/cpp2a/nodiscard-reason.C: Adjust expected warnings. From-SVN: r277719
2019-11-01decl.c (match_byte_typespec): New function.Steven G. Kargl5-16/+62
2019-11-01 Steven G. Kargl <kargl@gcc.gnu.org> * decl.c (match_byte_typespec): New function. Match BYTE type-spec. (gfc_match_decl_type_spec): Use it. 2019-11-01 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.dg/byte_3.f: New test. * gfortran.dg/byte_4.f90: Ditto. From-SVN: r277715
2019-11-01re PR fortran/90988 (Wrong error message with variables named "PUBLIC*")Steven G. Kargl4-11/+37
2019-11-01 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/90988 * decl.c (gfc_match_private, gfc_match_public): Fixed-form source code does not require whitespace between PRIVATE (or PUBLIC) and an entity. 2019-11-01 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/90988 * gfortran.dg/pr90988_4.f: New test. From-SVN: r277714
2019-11-01builtin-sprintf-warn-3.c: Declare test functions with noipa attribute.Martin Sebor2-12/+20
gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Declare test functions with noipa attribute. From-SVN: r277711
2019-11-01[rs6000] vector conversion RTL pattern update for diff unit sizeKewen Lin3-31/+102
2019-11-01 Kewen Lin <linkw@gcc.gnu.org> * config/rs6000/rs6000-modes.def (V2SF, V2SI): New modes. * config/rs6000/vsx.md (UNSPEC_VSX_CVSPSXDS, UNSPEC_VSX_CVSPUXDS): Remove. (vsx_xvcvspdp): New define_expand, old define_insn split to... (vsx_xvcvspdp_be): ... this. New. And... (vsx_xvcvspdp_le): ... this. New. (vsx_xvcv<su>xwdp): New define_expand, old define_insn split to... (vsx_xvcv<su>xwdp_be): ... this. New. And... (vsx_xvcv<su>xwdp_le): ... this. New. (vsx_xvcvsp<su>xds): New define_expand, old define_insn split to... (vsx_xvcvsp<su>xds_be): ... this. New. And... (vsx_xvcvsp<su>xds_le): ... this. New. From-SVN: r277709
2019-11-01[rs6000] vector conversion RTL pattern update for same unit sizeKewen Lin2-77/+37
2019-11-01 Kewen Lin <linkw@gcc.gnu.org> * config/rs6000/vsx.md (UNSPEC_VSX_CVSXWSP, UNSPEC_VSX_CVUXWSP, UNSPEC_VSX_XVCVSXDDP, UNSPEC_VSX_XVCVUXDDP, UNSPEC_VSX_XVCVDPSXDS, UNSPEC_VSX_XVCVDPUXDS, UNSPEC_VSX_XVCVSPSXWS): Remove. (vsx_xvcv<su>xddp, vsx_xvcvdp<su>xds, vsx_xvcvsp<su>xws, vsx_xvcv<su>xwsp): Update define_insn RTL patterns. From-SVN: r277708
2019-11-01[C++ PATCH] cleanup check_field_declsNathan Sidwell4-139/+159
https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00012.html cp/ * class.c (check_field_decls): Refactor. testsuite/ * g++.dg/template/fn.C: New. From-SVN: r277707
2019-11-01[rs6000] Replace vsx_xvcdpsp by vsx_xvcvdpspKewen Lin3-11/+9
2019-11-01 Kewen Lin <linkw@gcc.gnu.org> * config/rs6000/vsx.md (vsx_xvcdpsp): Remove define_insn. (UNSPEC_VSX_XVCDPSP): Remove. * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Replace gen_vsx_xvcdpsp by gen_vsx_xvcvdpsp. From-SVN: r277706
2019-11-01OpenMP] use_device_addr/use_device_ptr with Fortran allocatable/pointer arraysTobias Burnus11-13/+140
gcc/fortran/ * f95-lang.c (LANG_HOOKS_OMP_ARRAY_DATA): Set to gfc_omp_array_data. * trans-array.c (gfc_conv_descriptor_data_get): Handle also REFERENCE_TYPE. * trans-openmp.c (gfc_omp_array_data): New. * trans.h (gfc_omp_array_data): New prototype. gcc/ * hooks.c (hook_tree_tree_bool_null): New. * hooks.h (hook_tree_tree_bool_null): Declare. * langhooks-def.h (LANG_HOOKS_OMP_ARRAY_DATA): Define. (LANG_HOOKS_DECLS): Add it. * langhooks.h (lang_hooks_for_decls): Add omp_array_data. * omp-low.c (install_var_field): New mode for Fortran descriptor arrays. (lower_omp_target): Handle Fortran array with descriptor in OMP_CLAUSE_USE_DEVICE_ADDR/OMP_CLAUSE_USE_DEVICE_PTR. libgomp/ * testsuite/libgomp.fortran/use_device_addr-1.f90 (test_nullptr_1, test_dummy_opt_nullptr_callee_1): Add present but unallocated test. * testsuite/libgomp.fortran/use_device_addr-2.f90: Likewise. * testsuite/libgomp.fortran/use_device_addr-3.f90: New. * testsuite/libgomp.fortran/use_device_addr-4.f90: New. * testsuite/testsuite/libgomp.fortran/use_device_ptr-1.f90: New. From-SVN: r277705
2019-11-01PR testsuite/92127: Disable unrolling for some vect code model casesKewen Lin3-0/+11
2019-11-01 Kewen Lin <linkw@gcc.gnu.org> PR testsuite/92127 * gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c: Disable unroll. * gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c: Likewise. From-SVN: r277704