aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-07-15[Ada] Documentation cleanupsArnaud Charlet3-879/+560
gcc/ada/ * doc/gnat_ugn/about_this_guide.rst: Remove old section and update for Ada 202x. * doc/gnat_ugn/getting_started_with_gnat.rst: Add a system requirements section. Remove obsolete section and minimal rewording on the getting started section. * gnat_ugn.texi: Regenerate.
2020-07-15[Ada] Fix slices and qualified expressions being effectively volatilePiotr Trojanek3-4/+11
gcc/ada/ * exp_ch5.adb (Expand_Assign_Array): Use short-circuit operator (style). * sem_res.adb (Resolve_Indexed_Component): Fix style in comment. * sem_util.adb (Is_Effectively_Volatile_Object): Handle slices just like indexed components; handle qualified expressions and type conversions lie in Is_OK_Volatile_Context. (Is_OK_Volatile_Context): Handle qualified expressions just like type conversions.
2020-07-15[Ada] Cleanup condition for an effectively volatile array typePiotr Trojanek2-18/+18
gcc/ada/ * sem_prag.adb (Atomic_Components): Simplify with Ekind_In. (Complex_Representation): Fix type of E_Id, which just like when for pragma Atomic_Components will hold an N_Identifier node, not an entity. * sem_util.adb (Is_Effectively_Volatile): Refactor to avoid unnecessary computation.
2020-07-15[Ada] Extend static functionsArnaud Charlet14-130/+362
gcc/ada/ * inline.adb, inline.ads (Inline_Static_Expression_Function_Call): Renamed Inline_Static_Function_Call. * sem_ch13.adb (Analyze_Aspect_Static): Allow static intrinsic imported functions under -gnatX. * sem_util.ads, sem_util.adb (Is_Static_Expression_Function): Renamed Is_Static_Function. (Is_Static_Expression_Function_Call): Renamed Is_Static_Function_Call. * sem_ch6.adb, sem_elab.adb, sem_res.adb: Update calls to Is_Static_Function*. * sem_eval.adb (Fold_Dummy, Eval_Intrinsic_Call, Fold_Shift): New. (Eval_Call): Add support for intrinsic calls, code refactoring. (Eval_Entity_Name): Code refactoring. (Eval_Logical_Op): Update comment. (Eval_Shift): Call Fold_Shift. Update comments. * par-prag.adb (Par [Pragma_Extensions_Allowed]): Set Ada_Version to Ada_Version_Type'Last to handle Extensions_Allowed (On) consistently. * opt.ads (Extensions_Allowed): Update documentation. * sem_attr.adb: Update comment. * doc/gnat_rm/implementation_defined_pragmas.rst: Update documentation of Extensions_Allowed. * gnat_rm.texi: Regenerate.
2020-07-15[Ada] Potential access to uninitialized variableArnaud Charlet1-1/+3
gcc/ada/ * sem_aggr.adb (Resolve_Iterated_Component_Association): Ensure Typ is never accessed uninitialized.
2020-07-15[Ada] Fix typo in "accommodate" in docs and commentsPiotr Trojanek3-3/+3
gcc/ada/ * doc/gnat_rm/representation_clauses_and_pragmas.rst: Fix typo. * gnat_rm.texi: Regenerate. * libgnat/s-secsta.ads (Memory_Alignment): Likewise.
2020-07-15[Ada] Minor reformatting of comments and some code, plus a typo correctionGary Dismukes3-19/+19
gcc/ada/ * exp_ch6.adb: Add a comma and fix a typo (machinary => machinery) in comment. * exp_aggr.adb: Reformat, fix capitalization, and add a couple of commas in a comment. Adjust columns in several code fragments. * sem_aggr.adb: Reformat and add a comma in a comment.
2020-07-15[Ada] Use Sloc of delay statement in timed entry callEric Botcazou1-2/+1
gcc/ada/ * exp_ch9.adb (Expand_N_Timed_Entry_Call): Use the Sloc of the delay statement in the expansion.
2020-07-15[Ada] Ongoing work for unnamed and named container aggregatesEd Schonberg2-38/+288
gcc/ada/ * sem_aggr.adb (Resolve_Iterated_Component_Association): New procedure, internal to Resolve_Container_Aggregate, to complete semantic analysis of Iterated_Component_Associations. * exp_aggr.adb (Expand_Iterated_Component): New procedure, internal to Expand_Container_Aggregate, to expand the construct into an implicit loop that performs individual insertions into the target aggregate.
2020-07-15[Ada] Spurious accessibility error on allocatorJustin Squirek1-0/+6
gcc/ada/ * exp_ch6.adb (Make_Build_In_Place_Call_Allocator): Normalize the associated node for internally generated objects to be like their SOAAT counter-parts.
2020-07-15[Ada] Fix potentially uninitialized variable flagged by CodePeerArnaud Charlet1-0/+3
gcc/ada/ * libgnat/g-socket.adb (Wait_On_Socket): Fix potentially uninitialized variable.
2020-07-15c++: error recovery & pragmasNathan Sidwell2-15/+64
Parser error recovery can get confused by the tokens within a deferred pragma, as treats those as regular tokens. This adjusts the recovery so that the pragma is treated as a unit. Also, the preprocessor now ensures that we never have an EOF token inside a pragma -- the pragma is always closed first. gcc/cp/ * parser.c (cp_parser_skip_to_closing_parenthesis_1): Deal with meeting a deferred pragma. (cp_parser_skip_to_end_of_statement): Likewise. (cp_parser_skip_to_end_of_block_or_statement): Likewise. (cp_parser_skip_to_pragma_eol): We should never meet EOF. (cp_parser_omp_declare_simd): Likewise. (cp_parser_omp_declare_reduction, cp_parser_oacc_routine) (pragma_lex): Likewise. gcc/testsuite/ * g++.dg/parse/pragma-recovery.C: New.
2020-07-15libgomp.fortran/struct-elem-map-1.f90: Add char kind=4 testsTobias Burnus1-40/+120
As the Fortran PR 95837 has been fixed, the test could be be added. libgomp/ChangeLog: * testsuite/libgomp.fortran/struct-elem-map-1.f90: Remove unused variables; add character(kind=4) tests; update TODO comment.
2020-07-15fix _mm512_{,mask_}cmp*_p[ds]_mask at -O0 [PR96174]Jakub Jelinek3-82/+90
The _mm512_{,mask_}cmp_p[ds]_mask and also _mm_{,mask_}cmp_s[ds]_mask intrinsics have an argument which must have a constant passed to it and so use an inline version only for ifdef __OPTIMIZE__ and have a #define for -O0. But the _mm512_{,mask_}cmp*_p[ds]_mask intrinsics don't need a constant argument, they are essentially the first set with the constant added to them implicitly based on the comparison name, and so there is no #define version for them (correctly). But their inline versions are defined in between the first and s[ds] set and so inside of ifdef __OPTIMIZE__, which means that with -O0 they aren't defined at all. This patch fixes that by moving those after the #ifdef __OPTIMIZE #else use #define #endif block. 2020-07-15 Jakub Jelinek <jakub@redhat.com> PR target/96174 * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask, _mm512_mask_cmpeq_pd_mask, _mm512_cmplt_pd_mask, _mm512_mask_cmplt_pd_mask, _mm512_cmple_pd_mask, _mm512_mask_cmple_pd_mask, _mm512_cmpunord_pd_mask, _mm512_mask_cmpunord_pd_mask, _mm512_cmpneq_pd_mask, _mm512_mask_cmpneq_pd_mask, _mm512_cmpnlt_pd_mask, _mm512_mask_cmpnlt_pd_mask, _mm512_cmpnle_pd_mask, _mm512_mask_cmpnle_pd_mask, _mm512_cmpord_pd_mask, _mm512_mask_cmpord_pd_mask, _mm512_cmpeq_ps_mask, _mm512_mask_cmpeq_ps_mask, _mm512_cmplt_ps_mask, _mm512_mask_cmplt_ps_mask, _mm512_cmple_ps_mask, _mm512_mask_cmple_ps_mask, _mm512_cmpunord_ps_mask, _mm512_mask_cmpunord_ps_mask, _mm512_cmpneq_ps_mask, _mm512_mask_cmpneq_ps_mask, _mm512_cmpnlt_ps_mask, _mm512_mask_cmpnlt_ps_mask, _mm512_cmpnle_ps_mask, _mm512_mask_cmpnle_ps_mask, _mm512_cmpord_ps_mask, _mm512_mask_cmpord_ps_mask): Move outside of __OPTIMIZE__ guarded section. * gcc.target/i386/avx512f-vcmppd-3.c: New test. * gcc.target/i386/avx512f-vcmpps-3.c: New test.
2020-07-15builtins: Avoid useless char/short -> int promotions before atomics [PR96176]Jakub Jelinek2-0/+37
As mentioned in the PR, we generate a useless movzbl insn before lock cmpxchg. The problem is that the builtin for the char/short cases has the arguments promoted to int and combine gives up, because the instructions have MEM_VOLATILE_P arguments and recog in that case doesn't recognize anything when volatile_ok is false, and nothing afterwards optimizes the (reg:SI a) = (zero_extend:SI (reg:QI a)) ... (subreg:QI (reg:SI a) 0) ... The following patch fixes it at expansion time, we already have a function that is meant to undo the promotion, so this just adds the very common case to that. 2020-07-15 Jakub Jelinek <jakub@redhat.com> PR target/96176 * builtins.c: Include gimple-ssa.h, tree-ssa-live.h and tree-outof-ssa.h. (expand_expr_force_mode): If exp is a SSA_NAME with different mode from MODE and get_gimple_for_ssa_name is a cast from MODE, use the cast's rhs. * gcc.target/i386/pr96176.c: New test.
2020-07-15rs6000: Refine RTL unroll hook for small loopsguojiufu1-5/+6
For very small loops (< 6 insns), it would be fine to unroll 4 times to run fast with less latency and better cache usage. Like below loops: while (i) a[--i] = NULL; while (p < e) *d++ = *p++; With this patch enhances, we could see some performance improvement for some workloads(e.g. SPEC2017). 2020-07-13 Jiufu Guo <guojiufu@cn.ibm.com> * config/rs6000/rs6000.c (rs6000_loop_unroll_adjust): Refine hook.
2020-07-15libgomp: Add Fortran routine support for allocatorsTobias Burnus16-4/+574
libgomp/ChangeLog: * allocator.c: Add ialias for omp_init_allocator and omp_destroy_allocator. * configure.ac: Set INTPTR_T_KIND. * configure: Regenerate. * Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. * fortran.c (omp_init_allocator_, omp_destroy_allocator_, omp_set_default_allocator_, omp_get_default_allocator_): New functions and ialias_redirect. * icv.c: Add ialias for omp_set_default_allocator and omp_get_default_allocator. * libgomp.map (OMP_5.0.1): Add omp_init_allocator_, omp_destroy_allocator_, omp_set_default_allocator_ and omp_get_default_allocator_. * omp_lib.f90.in: Add allocator traits parameters, declare allocator routines and add related kind parameters. * omp_lib.h.in: Likewise. * testsuite/libgomp.c-c++-common/alloc-2.c: Fix sizeof. * testsuite/libgomp.fortran/alloc-1.F90: New test. * testsuite/libgomp.fortran/alloc-2.F90: New test. * testsuite/libgomp.fortran/alloc-3.F: New test. * testsuite/libgomp.fortran/alloc-4.f90: New test. * testsuite/libgomp.fortran/alloc-5.f90: New test.
2020-07-15Daily bump.GCC Administrator13-1/+408
2020-07-14c++: Add new test [PR59978]Marek Polacek1-0/+16
Fixed in r224162. That came without a test so adding this one. Previously, we issued a bogus "too few arguments to function" error. gcc/testsuite/ChangeLog: PR c++/59978 * g++.dg/cpp0x/vt-59978.C: New test.
2020-07-14x86: Replace __glibc_unlikely with __builtin_expectH.J. Lu1-1/+1
Replace glibc specific __glibc_unlikely with __builtin_expect. PR target/95443 * gcc.target/i386/pr95443-1.c (simple_strstr): Replace __glibc_unlikely with __builtin_expect.
2020-07-14c++: Make convert_like complain about bad ck_ref_bind again [PR95789]Marek Polacek4-16/+98
convert_like issues errors about bad_p conversions at the beginning of the function, but in the ck_ref_bind case, it only issues them after we've called convert_like on the next conversion. This doesn't work as expected since r10-7096 because when we see a conversion from/to class type in a template, we return early, thereby missing the error, and a bad_p conversion goes by undetected. That made the attached test to compile even though it should not. I had thought that I could just move the ck_ref_bind/bad_p errors above to the rest of them, but that regressed diagnostics because expr then wasn't converted yet by the nested convert_like_real call. So, for bad_p conversions, do the normal processing, but still return the IMPLICIT_CONV_EXPR to avoid introducing trees that the template processing can't handle well. This I achieved by adding a wrapper function. gcc/cp/ChangeLog: PR c++/95789 PR c++/96104 PR c++/96179 * call.c (convert_like_real_1): Renamed from convert_like_real. (convert_like_real): New wrapper for convert_like_real_1. gcc/testsuite/ChangeLog: PR c++/95789 PR c++/96104 PR c++/96179 * g++.dg/conversion/ref4.C: New test. * g++.dg/conversion/ref5.C: New test. * g++.dg/conversion/ref6.C: New test.
2020-07-14rs6000: Don't call movsi_from_sf in 32 bit mode.David Edelsohn2-2/+2
movsi_from_sf uses rldimi instruction, which will cause the compiler to ICE in 32 bit mode. This patch limits the recently added pattern and call to TARGET_POWERPC64. 2020-07-14 David Edelsohn <dje.gcc@gmail.com> gcc/ChangeLog * config/rs6000/rs6000.md (rotldi3_insert_sf): Add TARGET_POWERPC64 condition. * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add TARGET_POWERPC64 requirement to TARGET_P8_VECTOR case.
2020-07-14c++: Parser entry cleanupNathan Sidwell1-51/+44
The handling of PCH is a little trick, because we have to deal with it before allocating memory. I found the layering somewhat confusing. This patch reorganizes that, so that the stopping of PCH is done in exactly one place, and the ordering of lexer creation relative to that is much clearer. I also changed the error message about multiple source files as with C++20, 'modules' means something rather specific. Other than the error message changes, no functional changes. gcc/cp/ * parser.c (cp_lexer_alloc): Do not deal with PCH here. (cp_lexer_new_main): Deal with PCH here. Store the tokens directly into the buffer. (cp_lexer_new_from_tokens): Assert last token isn't purged either. (cp_lexer_get_preprocessor_token): Change first arg to flags, adjust. (cp_parser_new): Pass the lexer in, don't create it here. (cp_parser_translation_unit): Initialize access checks here. (cp_parser_initial_pragma): First token is provided by caller, don't deal with PCH stopping here. Adjust error message. (c_parse_file): Adjust, change error message to avoid C++20 module confusion.
2020-07-14libgomp: Fix hang when profiling OpenACC programs with CUDA 9.0 nvprofKwok Cheung Yeung3-0/+129
The version of nvprof in CUDA 9.0 causes a hang when used to profile an OpenACC program. This is because it calls acc_get_device_type from a callback called during device initialization, which then attempts to acquire acc_device_lock while it is already taken, resulting in deadlock. This works around the issue by returning acc_device_none from acc_get_device_type without attempting to acquire the lock when initialization has not completed yet. 2020-07-14 Tom de Vries <tom@codesourcery.com> Cesar Philippidis <cesar@codesourcery.com> Thomas Schwinge <thomas@codesourcery.com> Kwok Cheung Yeung <kcy@codesourcery.com> libgomp/ * oacc-init.c (acc_init_state_lock, acc_init_state, acc_init_thread): New variable. (acc_init_1): Set acc_init_thread to pthread_self (). Set acc_init_state to initializing at the start, and to initialized at the end. (self_initializing_p): New function. (acc_get_device_type): Return acc_device_none if called by thread that is currently executing acc_init_1. * libgomp.texi (acc_get_device_type): Update documentation. (Implementation Status and Implementation-Defined Behavior): Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_prof-init-2.c: New.
2020-07-14demangler: don't treat lambda as a substitution candidateIan Lance Taylor2-8/+9
libiberty/ChangeLog: PR demangler/96143 * cp-demangle.c (d_lambda): Don't add substitution candidate. * testsuite/demangle-expected: Update a few existing test cases accordingly, and add a new test case.
2020-07-14diagnostics: Support conversion of tabs to spaces [PR49973] [PR86904]Lewis Hyatt48-287/+1106
Supports conversion of tabs to spaces when outputting diagnostics. Also adds -fdiagnostics-column-unit and -fdiagnostics-column-origin options to control how the column number is output, thereby resolving the two PRs. gcc/c-family/ChangeLog: PR other/86904 * c-indentation.c (should_warn_for_misleading_indentation): Get global tabstop from the new source. * c-opts.c (c_common_handle_option): Remove handling of -ftabstop, which is now a common option. * c.opt: Likewise. gcc/ChangeLog: PR preprocessor/49973 PR other/86904 * common.opt: Handle -ftabstop here instead of in c-family options. Add -fdiagnostics-column-unit= and -fdiagnostics-column-origin= options. * opts.c (common_handle_option): Handle the new options. * diagnostic-format-json.cc (json_from_expanded_location): Add diagnostic_context argument. Use it to convert column numbers as per the new options. (json_from_location_range): Likewise. (json_from_fixit_hint): Likewise. (json_end_diagnostic): Pass the new context argument to helper functions above. Add "column-origin" field to the output. (test_unknown_location): Add the new context argument to calls to helper functions. (test_bad_endpoints): Likewise. * diagnostic-show-locus.c (exploc_with_display_col::exploc_with_display_col): Support tabstop parameter. (layout_point::layout_point): Make use of class exploc_with_display_col. (layout_range::layout_range): Likewise. (struct line_bounds): Clarify that the units are now always display columns. Rename members accordingly. Add constructor. (layout::print_source_line): Add support for tab expansion. (make_range): Adapt to class layout_range changes. (layout::maybe_add_location_range): Likewise. (layout::layout): Adapt to class exploc_with_display_col changes. (layout::calculate_x_offset_display): Support tabstop parameter. (layout::print_annotation_line): Adapt to struct line_bounds changes. (layout::print_line): Likewise. (line_label::line_label): Add diagnostic_context argument. (get_affected_range): Likewise. (get_printed_columns): Likewise. (layout::print_any_labels): Adapt to struct line_label changes. (class correction): Add m_tabstop member. (correction::correction): Add tabstop argument. (correction::compute_display_cols): Use m_tabstop. (class line_corrections): Add m_context member. (line_corrections::line_corrections): Add diagnostic_context argument. (line_corrections::add_hint): Use m_context to handle tabstops. (layout::print_trailing_fixits): Adapt to class line_corrections changes. (test_layout_x_offset_display_utf8): Support tabstop parameter. (test_layout_x_offset_display_tab): New selftest. (test_one_liner_colorized_utf8): Likewise. (test_tab_expansion): Likewise. (test_diagnostic_show_locus_one_liner_utf8): Call the new tests. (diagnostic_show_locus_c_tests): Likewise. (test_overlapped_fixit_printing): Adapt to helper class and function changes. (test_overlapped_fixit_printing_utf8): Likewise. (test_overlapped_fixit_printing_2): Likewise. * diagnostic.h (enum diagnostics_column_unit): New enum. (struct diagnostic_context): Add members for the new options. (diagnostic_converted_column): Declare. (json_from_expanded_location): Add new context argument. * diagnostic.c (diagnostic_initialize): Initialize new members. (diagnostic_converted_column): New function. (maybe_line_and_column): Be willing to output a column of 0. (diagnostic_get_location_text): Convert column number as per the new options. (diagnostic_report_current_module): Likewise. (assert_location_text): Add origin and column_unit arguments for testing the new functionality. (test_diagnostic_get_location_text): Test the new functionality. * doc/invoke.texi: Document the new options and behavior. * input.h (location_compute_display_column): Add tabstop argument. * input.c (location_compute_display_column): Likewise. (test_cpp_utf8): Add selftests for tab expansion. * tree-diagnostic-path.cc (default_tree_make_json_for_path): Pass the new context argument to json_from_expanded_location(). libcpp/ChangeLog: PR preprocessor/49973 PR other/86904 * include/cpplib.h (struct cpp_options): Removed support for -ftabstop, which is now handled by diagnostic_context. (class cpp_display_width_computation): New class. (cpp_byte_column_to_display_column): Add optional tabstop argument. (cpp_display_width): Likewise. (cpp_display_column_to_byte_column): Likewise. * charset.c (cpp_display_width_computation::cpp_display_width_computation): New function. (cpp_display_width_computation::advance_display_cols): Likewise. (compute_next_display_width): Removed and implemented this functionality in a new function... (cpp_display_width_computation::process_next_codepoint): ...here. (cpp_byte_column_to_display_column): Added tabstop argument. Reimplemented in terms of class cpp_display_width_computation. (cpp_display_column_to_byte_column): Likewise. * init.c (cpp_create_reader): Remove handling of -ftabstop, which is now handled by diagnostic_context. gcc/testsuite/ChangeLog: PR preprocessor/49973 PR other/86904 * c-c++-common/Wmisleading-indentation-3.c: Adjust expected output for new defaults. * c-c++-common/Wmisleading-indentation.c: Likewise. * c-c++-common/diagnostic-format-json-1.c: Likewise. * c-c++-common/diagnostic-format-json-2.c: Likewise. * c-c++-common/diagnostic-format-json-3.c: Likewise. * c-c++-common/diagnostic-format-json-4.c: Likewise. * c-c++-common/diagnostic-format-json-5.c: Likewise. * c-c++-common/missing-close-symbol.c: Likewise. * g++.dg/diagnostic/bad-binary-ops.C: Likewise. * g++.dg/parse/error4.C: Likewise. * g++.old-deja/g++.brendan/crash11.C: Likewise. * g++.old-deja/g++.pt/overload2.C: Likewise. * g++.old-deja/g++.robertl/eb109.C: Likewise. * gcc.dg/analyzer/malloc-paths-9.c: Likewise. * gcc.dg/bad-binary-ops.c: Likewise. * gcc.dg/format/branch-1.c: Likewise. * gcc.dg/format/pr79210.c: Likewise. * gcc.dg/plugin/diagnostic-test-expressions-1.c: Likewise. * gcc.dg/plugin/diagnostic-test-string-literals-1.c: Likewise. * gcc.dg/redecl-4.c: Likewise. * gfortran.dg/diagnostic-format-json-1.F90: Likewise. * gfortran.dg/diagnostic-format-json-2.F90: Likewise. * gfortran.dg/diagnostic-format-json-3.F90: Likewise. * go.dg/arrayclear.go: Add a comment explaining why adding a comment was necessary to work around a dejagnu bug. * c-c++-common/diagnostic-units-1.c: New test. * c-c++-common/diagnostic-units-2.c: New test. * c-c++-common/diagnostic-units-3.c: New test. * c-c++-common/diagnostic-units-4.c: New test. * c-c++-common/diagnostic-units-5.c: New test. * c-c++-common/diagnostic-units-6.c: New test. * c-c++-common/diagnostic-units-7.c: New test. * c-c++-common/diagnostic-units-8.c: New test.
2020-07-14c++: tree dumperNathan Sidwell1-0/+10
A couple of C++ nodes were unknown to the tree dumper. gcc/cp/ * ptree.c (cxx_print_type): Add TYPEOF_TYPE and BASES.
2020-07-14c++: Refactor some class fnsNathan Sidwell1-16/+17
Storing CLASSTYPE_AS_BASE in a local variable makes some code clearer (and textually no longer). For some reason we store a DECL in a variable called 'value', which is confusing. gcc/cp/ * class.c (build_base_field_1): Cache CLASSTYPE_AS_BASE. (build_self_reference): Rename value -> decl. (dump_class_hierarchy_1): Cache CLASSTYPE_AS_BASE.
2020-07-14aix: FAT libraries: test native compiler mode directlyDavid Edelsohn5-5/+5
The FAT libraries config fragments need to know which library is native and which is a multilib to choose the correct multilib from which to append the additional object file or shared object file. Testing the top-level archive is fragile because it will fail if rebuilding. This patch tests the compiler preprocessing macros for the 64 bit AIX specific __64BIT__ to determine the native mode of the compiler in MULTILIBTOP. 2020-07-14 David Edelsohn <dje.gcc@gmail.com> libatomic/ChangeLog * config/t-aix: Set BITS from compiler cpp macro. libgcc/ChangeLog * config/rs6000/t-slibgcc-aix: Set BITS from compiler cpp macro. libgfortran/ChangeLog * config/t-aix: Set BITS from compiler cpp macro. libgomp/ChangeLog * config/t-aix: Set BITS from compiler cpp macro. libstdc++-v3/ChangeLog * config/os/aix/t-aix: Set BITS from compiler cpp macro.
2020-07-14Fix goacc/finalize-1.f tree dump-scanning for -m32Tobias Burnus1-2/+2
gcc/testsuite/ChangeLog: * gfortran.dg/goacc/finalize-1.f: Relax scan-tree-dump-times pattern to work on 32bit-pointer systems.
2020-07-14testsuite: adapt g++.dg/ipa/pr83667.C for AIXDavid Edelsohn1-1/+1
The current testsuite regex looks for THUNK0. AIX generates THUNK..0. This patch expands the regex to allow 0 or more dots between THUNK and the 0. gcc/testsuite/ChangeLog 2020-07-14 David Edelsohn <dje.gcc@gmail.com> * g++.dg/ipa/pr83667.C: Allow 0 or more dots between THUNK and 0.
2020-07-14expr: Unbreak build of mesa [PR96194]Jakub Jelinek2-1/+24
> > The store to the whole of each volatile object was picked apart > > like there had been an individual assignment to each of the > > fields. Reads were added as part of that; see PR for details. > > The reads from volatile memory were a clear bug; individual > > stores questionable. A separate patch clarifies the docs. This breaks building of mesa on both the trunk and 10 branch. The problem is that the middle-end may never create temporaries of non-POD (TREE_ADDRESSABLE) types, those can be only created when the language says so and thus only the FE is allowed to create those. This patch just reverts the behavior to what we used to do before for the stores to volatile non-PODs. Perhaps we want to do something else, but definitely we can't create temporaries of the non-POD type. It is up to discussions on what should happen in those cases. 2020-07-14 Jakub Jelinek <jakub@redhat.com> PR middle-end/96194 * expr.c (expand_constructor): Don't create temporary for store to volatile MEM if exp has an addressable type. * g++.dg/opt/pr96194.C: New test.
2020-07-14c++: Improve checking of decls with trailing return type [PR95820]Marek Polacek2-86/+93
This is an ICE-on-invalid but I've been seeing it when reducing various testcases, so it's more important for me than usually. splice_late_return_type now checks that if we've seen a late return type, the function return type was auto. That's a fair assumption but grokdeclarator/cdk_function wasn't giving errors for function pointers and similar. So we want to perform various checks not only when funcdecl_p || inner_declarator == NULL. But only give the !late_return_type errors when funcdecl_p, to accept e.g. auto (*fp)() = f; in C++11. Here's a diff -w to ease the review: --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -12102,14 +12102,9 @@ grokdeclarator (const cp_declarator *declarator, /* Handle a late-specified return type. */ tree late_return_type = declarator->u.function.late_return_type; - if (funcdecl_p - /* This is the case e.g. for - using T = auto () -> int. */ - || inner_declarator == NULL) - { if (tree auto_node = type_uses_auto (type)) { - if (!late_return_type) + if (!late_return_type && funcdecl_p) { if (current_class_type && LAMBDA_TYPE_P (current_class_type)) @@ -12201,7 +12196,6 @@ grokdeclarator (const cp_declarator *declarator, "type specifier", name); return error_mark_node; } - } type = splice_late_return_type (type, late_return_type); if (type == error_mark_node) return error_mark_node; gcc/cp/ChangeLog: PR c++/95820 * decl.c (grokdeclarator) <case cdk_function>: Check also pointers/references/... to functions. gcc/testsuite/ChangeLog: PR c++/95820 * g++.dg/cpp1y/auto-fn58.C: New test.
2020-07-14core: formatting & commentNathan Sidwell2-3/+4
One of hash_map's getters returns a pointer to T or null, The comment said it returned T or null. Also an unaligned pair of comments. gcc/ * hash-map.h (hash_map::get): Note it is a pointer to value. * incpath.h (incpath_kind): Align comments.
2020-07-14c++: Comments & formattingNathan Sidwell12-68/+81
I found some bad formatting and misleading or incomplete comments during my spelunking around the c++FE. May as well clean up trunk and record what I noted. gcc/cp/ * cp-tree.h: Correct some tree lang flag comments, reformat some structure definitions. Note some structure sizes. Clarify some comments. (yyungetc): Delete. Not been a thing for some time. * class.c (copy_fndecl_with_name): Comment. (check_bases_and_members): Unnecessary {}. (layout_class_type): Comment. * cp-tree.def (UNBOUND_CLASS_TEMPLATE): Adjust comment. * decl.c: Fix some formatting & whitespace issues. (function_requirements_equivalent_p): Note why substitutions are needed. * decl2.c (no_linkage_error): Note that heroics about 'typedef struct { ... };' are no longer needed. * method.c: Whitespace. * name-lookup.c: Whitespace. (add_decl_to_level): Reformat a line. (print_binding_stack): Mark as DEBUG_FUNCTION. (has_using_namespace_std_directive_p): Delete comment. * pt.c: Whitespace * ptree.c: Whitespace. * rtti.c: Whitespace & comment. * tree.c: Comment. * typeck.c (structural_comptypes): Add comment.
2020-07-14core: add tree-node commentsNathan Sidwell2-1/+7
As we've moved to 64-bit systems, the padding information has become conditionally inaccurate. I also hit cases where invalid tree codes did not get flagged as invalid. gcc/ * tree-core.h (tree_decl_with_vis, tree_function_decl): Note additional padding on 64-bits * tree.c (cache_integer_cst): Note why no caching of enum literals. (get_tree_code_name): Robustify error case.
2020-07-14doc: Fix some typosNathan Sidwell2-2/+1
gty calls gt_clear*e*_cache not gt_clear_cache. I know not why it is named so, but at least document it correctly. invoke.texi had a duplicate opindex. gcc/ * doc/gty.texi: Fic gt_cleare_cache name. * doc/invoke.texi: Remove duplicate opindex Wabi-tag.
2020-07-14Fortran : ICE in gfc_check_pointer_assign PR95612Mark Eggleston2-1/+21
Output an error if the right hand value is a zero sized array or does not have a symbol tree otherwise continue checking. 2020-07-14 Steven G. Kargl <kargl@gcc.gnu.org> gcc/fortran/ PR fortran/95612 * expr.c (gfc_check_pointer_assigb): Output an error if rvalue is a zero sized array or output an error if rvalue doesn't have a symbol tree. 2020-07-14 Mark Eggleston <markeggleston@gcc.gnu.org> gcc/testsuite/ PR fortran/95612 * gfortran.dg/pr95612.f90: New test.
2020-07-14[OpenMP, Fortran] Add structure/derived-type element mappingTobias Burnus6-118/+595
gcc/fortran/ChangeLog: * openmp.c (gfc_match_omp_clauses): Match also derived-type component refs in OMP_CLAUSE_MAP. (resolve_omp_clauses): Resolve those. * trans-openmp.c (gfc_trans_omp_array_section, gfc_trans_omp_clauses): Handle OpenMP structure-element mapping. (gfc_trans_oacc_construct, gfc_trans_oacc_executable_directive, (gfc_trans_oacc_combined_directive, gfc_trans_oacc_declare): Update add openacc=true in gfc_trans_omp_clauses call. gcc/testsuite/ChangeLog: * gfortran.dg/goacc/finalize-1.f: Update dump scan pattern. * gfortran.dg/gomp/map-1.f90: Update dg-error. * gfortran.dg/gomp/map-2.f90: New test. libgomp/ChangeLog: * testsuite/libgomp.fortran/struct-elem-map-1.f90: New test.
2020-07-14[Fortran, OpenMP] Fix allocatable-components check (PR67311)Tobias Burnus2-0/+46
gcc/fortran/ChangeLog: PR fortran/67311 * trans-openmp.c (gfc_has_alloc_comps): Return false also for pointers to arrays. libgomp/ChangeLog: PR fortran/67311 * testsuite/libgomp.fortran/target-map-1.f90: New test.
2020-07-14openmp: Adjust outer bounds of non-rect loopsJakub Jelinek4-4/+360
In loops like: #pragma omp parallel for collapse(2) for (i = -4; i < 8; i++) for (j = 3 * i; j > 2 * i; j--) for some outer loop iterations there are no inner loop iterations at all, the condition is false. In order to use Summæ Potestate to count number of iterations or to transform the logical iteration number to actual iterator values using quadratic non-equation root discovery the outer iterator range needs to be adjusted, such that the inner loop has at least one iteration for each of the outer loop iterator value in the reduced range. Sometimes this adjustment is done at the start of the range, at other times at the end. This patch implements it during the compile time number of loop computation (if all expressions are compile time constants). 2020-07-14 Jakub Jelinek <jakub@redhat.com> * omp-general.h (struct omp_for_data): Add adjn1 member. * omp-general.c (omp_extract_for_data): For non-rect loop, punt on count computing if n1, n2 or step are not INTEGER_CST earlier. Narrow the outer iterator range if needed so that non-rect loop has at least one iteration for each outer range iteration. Compute adjn1. * omp-expand.c (expand_omp_for_init_vars): Use adjn1 if non-NULL instead of the outer loop's n1. * testsuite/libgomp.c/loop-21.c: New test.
2020-07-14LTO: pick up -fcf-protection flag for the link stepMatthias Klose2-3/+56
2020-07-14 Matthias Klose <doko@ubuntu.com> PR lto/95604 * lto-wrapper.c (merge_and_complain): Add decoded options as parameter, error on different values for -fcf-protection. (append_compiler_options): Pass -fcf-protection option. (find_and_merge_options): Add decoded options as parameter, pass decoded_options to merge_and_complain. (run_gcc): Pass decoded options to find_and_merge_options. * lto-opts.c (lto_write_options): Pass -fcf-protection option.
2020-07-14Fortran : Implicitly type parameter causes an invalid error PR96038Mark Eggleston2-6/+17
If a paramter to declared and initialised before its type is declared a bogus error is output at the type declaration idicating that initialisation is missing. 2020-07-14 Steven G. Kargl <kargl@gcc.gnu.org> gcc/fortran/ PR fortran/96038 * decl.c (add_init_expr_sym): For a symbol that is a parameter accept an initialisation if it does not have a value otherwise output a error and reject. 2020-07-14 Mark Eggleston <markeggleston@gcc.gnu.org> gcc/testsuite/ PR fortran/96038 * gfortran.dg/pr96038.f90: New test.
2020-07-14Daily bump.GCC Administrator8-1/+293
2020-07-14Merge sibcall_local32/64Alan Modra1-41/+4
This patch consolidates four insn patterns into two. * config/rs6000/rs6000.md (sibcall_local): Merge sibcall_local32 and sibcall_local64. (sibcall_value_local): Similarly.
2020-07-13rs6000: clean up testsuite power10_hw checkAaron Sawdey1-1/+2
Because the check for power10_hw is not called check_effective_target_power10_hw, it needs to be looked for by is-effective-target-keyword. Also reorder things in is-effective-target to put power10_hw with the other ppc stuff. gcc/testsuite/ * lib/target-supports.exp (is-effective-target): Reorder to put powerpc stuff together. (is-effective-target-keyword): Add power10_hw.
2020-07-13testsuite: scan-lang-dump-times & scan-lang-dump-notNathan Sidwell1-0/+50
Sigh, last week's success at not breaking things failed with an incorrect 'fix' this morning. Let's reduce my confusion by making lib/scanlang.exp the same on trunk as modules. gcc/testsuite/ * lib/scanlang.exp (scan-lang-dump): Fix breakage. (scan-lang-dump-times, scan-lang-dump-not): New.
2020-07-13Remove long-gone cxxmain.c from makefilesNathan Sidwell2-2/+0
I discovered we were attempting to delete some no-longer generated files. gcc/ * Makefile.in (distclean): Remove long gone cxxmain.c gcc/cp/ * Make-lang.in (c++.disclean): Likewise.
2020-07-13rs6000: add effective-target test ppc_mma_hwAaron Sawdey4-0/+54
Add a test for dejagnu to determine if execution of MMA instructions is supported in the test environment. Add an execution test to make sure that __builtin_cpu_supports("mma") is true if we can execute MMA instructions. gcc/testsuite/ * lib/target-supports.exp (check_ppc_mma_hw_available): New function. (is-effective-target): Add ppc_mma_hw. (is-effective-target-keyword): Add ppc_mma_hw. * gcc.target/powerpc/mma-supported.c: New file. * gcc.target/powerpc/mma-single-test.c: Require ppc_mma_hw. * gcc.target/powerpc/mma-double-test.c: Require ppc_mma_hw.
2020-07-13x86: Pass a copy of the string length to cmpstrnqiH.J. Lu3-1/+214
cmpstrnsi expander may pass the actual string length directly to cmpstrnqi patterns. For cmpstrnsi, one of the strings must be a constant and expand_builtin_strncmp rewrites the length argument to be the minimum of the const string length and the actual string length. But it is not the case for cmpmemsi. Pass a copy of the string length to cmpstrnqi patterns to avoid changing the actual string length by cmpstrnqi patterns. gcc/ PR target/95443 * config/i386/i386.md (cmpstrnsi): Pass a copy of the string length to cmpstrnqi patterns. gcc/testsuite/ PR target/95443 * gcc.target/i386/pr95443-1.c: New test. * gcc.target/i386/pr95443-2.c: Likewise.