diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 110 | ||||
-rw-r--r-- | gcc/DATESTAMP | 2 | ||||
-rw-r--r-- | gcc/c/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/c/c-typeck.cc | 20 | ||||
-rw-r--r-- | gcc/cobol/ChangeLog | 179 | ||||
-rw-r--r-- | gcc/config/i386/i386.cc | 82 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 19 | ||||
-rw-r--r-- | gcc/simplify-rtx.cc | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 56 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/embed-18.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr120057-1.c | 18 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr120057-2.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr120059-1.c | 17 |
13 files changed, 528 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 137e388..afa194e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,113 @@ +2025-05-02 Andrew Pinski <quic_apinski@quicinc.com> + + PR rtl-optimization/120059 + * simplify-rtx.cc (simplify_with_subreg_not): Check the result + of simplify_gen_subreg. + +2025-05-02 Jakub Jelinek <jakub@redhat.com> + Andrew MacLeod <amacleod@redhat.com> + + PR c/117023 + * gimple-range-infer.cc (gimple_infer_range::gimple_infer_range): + For nonnull_if_nonzero attribute check also arg2 range if it doesn't + include zero and in that case call add_nonzero too. + +2025-05-02 Jeff Law <jlaw@ventanamicro.com> + + Revert: + 2025-04-21 Matthew Fortune <matthew.fortune@imgtec.com> + + * config/mips/mips.cc (mips_option_override): Error out for + -mmicromips -mmsa. + +2025-05-02 Jan Hubicka <hubicka@ucw.cz> + + PR target/119900 + * config/i386/i386.cc (ix86_can_change_mode_class): Add TODO + comment. + (ix86_rtx_costs): Make VEC_SELECT equivalent to SUBREG cost 1. + +2025-05-02 Jason Merrill <jason@redhat.com> + + PR c++/120012 + * doc/invoke.texi: Document C++20 aggregate fix. + * common.opt: Likewise. + +2025-05-02 Jason Merrill <jason@redhat.com> + + PR c++/60336 + * config/i386/i386.cc (ix86_warn_parameter_passing_abi): + If no target, check the current TU. + +2025-05-02 Richard Biener <rguenther@suse.de> + + * config/arc/arc.cc (TARGET_LRA_P): Remove define. + * config/gcn/gcn.cc (TARGET_LRA_P): Likewise. + +2025-05-02 Filip Kastl <fkastl@suse.cz> + + PR middle-end/117091 + * tree-switch-conversion.cc (switch_decision_tree::analyze_switch_statement): + Remove warning about using different algorithms. + +2025-05-02 Filip Kastl <fkastl@suse.cz> + + * tree-switch-conversion.cc (bit_test_cluster::find_bit_tests): + Modify the dynamic programming algorithm to take is_beneficial() + into account earlier. To do this efficiently, copy some logic + from is_beneficial() here. Add detailed comments about how the + DP algorithm works. + (bit_test_cluster::can_be_handled): Check that the cluster range + is >, not >= BITS_IN_WORD. Remove the + "vec<cluster *> &, unsigned, unsigned" overloaded variant since + we no longer need it. + (bit_test_cluster::is_beneficial): Add a comment that this + function is closely tied to m_max_case_bit_tests. Remove the + "vec<cluster *> &, unsigned, unsigned" overloaded variant since + we no longer need it. + * tree-switch-conversion.h: Remove the vec overloaded variants + of bit_test_cluster::is_beneficial and + bit_test_cluster::can_be_handled. + +2025-05-02 Filip Kastl <fkastl@suse.cz> + + PR middle-end/117091 + * tree-switch-conversion.cc (bit_test_cluster::find_bit_tests_fast): + Remove function. + (bit_test_cluster::find_bit_tests_slow): Remove function. + (bit_test_cluster::find_bit_tests): We don't need to decide + between slow and fast so just put the modified (no longer) slow + algorithm here. + +2025-05-02 Jennifer Schmitz <jschmitz@nvidia.com> + + * config/aarch64/aarch64-sve.md (vec_extract<mode><Vel>): + Prevent the emission of pfalse+lastb for VLS. + +2025-05-02 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/118617 + * tree-vect-generic.cc (expand_vector_conversion): Have 2 elements + as internal storage for converts. + * tree-vect-stmts.cc (vectorizable_conversion): Likewise. + +2025-05-02 Andrew Pinski <quic_apinski@quicinc.com> + + PR tree-optimization/118659 + * tree-ssanames.cc (get_known_nonzero_bits_1): Use + wi::bit_and_not instead of `a & ~b`. + +2025-05-02 Andrew Pinski <quic_apinski@quicinc.com> + + PR middle-end/118090 + * ccmp.cc (get_compare_parts): Remove the up argument. + (expand_ccmp_next): Update call to get_compare_parts. + (expand_ccmp_expr_1): Likewise. + +2025-05-02 Richard Biener <rguenther@suse.de> + + * common.opt.urls: Regenerate. + 2025-05-01 Jason Merrill <jason@redhat.com> * doc/invoke.texi: Add -fabi-version detail. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 8632515..2d83869 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20250502 +20250503 diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 08e747e..b7cdd11 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,14 @@ +2025-05-02 Jakub Jelinek <jakub@redhat.com> + + PR c/120057 + * c-typeck.cc (check_constexpr_init): Handle RAW_DATA_CST. + +2025-05-02 Florian Weimer <fweimer@redhat.com> + + PR c/120055 + * c-typeck.cc (convert_arguments): Check if fundecl is null + before checking for builtin function declaration. + 2025-05-01 Christopher Bazley <chris.bazley@arm.com> PR c/119317 diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index 05fb129..0e1f842 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -9143,8 +9143,24 @@ check_constexpr_init (location_t loc, tree type, tree init, /* The initializer must be an integer constant expression, representable in the target type. */ if (!int_const_expr) - error_at (loc, "%<constexpr%> integer initializer is not an " - "integer constant expression"); + { + if (TREE_CODE (init) == RAW_DATA_CST + && TYPE_PRECISION (type) == CHAR_BIT) + { + if (!TYPE_UNSIGNED (type)) + for (unsigned int i = 0; + i < (unsigned) RAW_DATA_LENGTH (init); ++i) + if (RAW_DATA_SCHAR_ELT (init, i) < 0) + { + error_at (loc, "%<constexpr%> initializer not " + "representable in type of object"); + break; + } + } + else + error_at (loc, "%<constexpr%> integer initializer is not an " + "integer constant expression"); + } else if (!int_fits_type_p (init, type)) error_at (loc, "%<constexpr%> initializer not representable in " "type of object"); diff --git a/gcc/cobol/ChangeLog b/gcc/cobol/ChangeLog index d7d8596..7cd2ae0 100644 --- a/gcc/cobol/ChangeLog +++ b/gcc/cobol/ChangeLog @@ -1,3 +1,182 @@ +2025-05-02 Jakub Jelinek <jakub@redhat.com> + + PR cobol/119364 + * structs.h (cbl_enabled_exception_type_node): New variable + declaration. + * structs.cc (cbl_enabled_exception_type_node): New variable. + (create_cbl_enabled_exception_t): New function. + (create_our_type_nodes): Initialize cbl_enabled_exception_type_node + using it. + * genapi.cc (stash_exceptions): Don't compare padding bits to + determine if the exceptions are the same as last time. Use + cbl_enabled_exception_type_node for target size and field offsets + and native_encode_expr to write each field into byte sequence. + +2025-05-02 Jakub Jelinek <jakub@redhat.com> + + PR cobol/119364 + * util.cc (is_numeric_edited): Use HOST_SIZE_T_PRINT_UNSIGNED + instead of "%zu" and cast corresponding argument to fmt_size_t. + (normalize_picture): Use GCC_PRISZ instead of "z" and pass address + of fmt_size_t var to sscanf and copy afterwards. + (cbl_refer_t::str): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" and cast corresponding argument + to fmt_size_t. + (struct move_corresponding_field): Likewise. + (valid_move): Likewise. + (ambiguous_reference): Likewise. + (parent_names): Likewise. + (find_corresponding::find_corresponding): Likewise. + (corresponding_fields): Likewise. + (unique_stack::push): Likewise. + (cobol_filename): Likewise. + * lexio.cc: Include config.h first. + (recognize_replacements): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" and cast corresponding argument + to fmt_size_t. + (check_source_format_directive): Likewise. + (parse_replacing_pair): Use size_t(0) instead of 0UL in span_t + construction. + (parse_replace_pairs): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead + of "%zd" and cast corresponding argument to fmt_size_t. + (parse_copy_directive): Likewise. + (parse_replace_last_off): Likewise. + (parse_replace_text): Likewise. + (bytespan_t::append): Likewise. + (cdftext::map_file): Likewise. + (cdftext::process_file): Likewise. + * symfind.cc (dump_symbol_map2): Likewise. + (dump_symbol_map_value): Likewise. + (build_symbol_map): Likewise. + (is_name::dump_key): Likewise. + (symbol_match2): Likewise. + (symbol_find): Likewise. + (symbol_find_of): Likewise. + * cdf.y: Likewise. + * symbols.cc: Include config.h first. + (cbl_field_t::set_attr): Return uint64_t rather than size_t + and replace size_t(attr) with uint64_t(attr). + (cbl_field_t::clear_attr): Likewise. + (symbol_field_capacity): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead + of "%zd" and cast corresponding argument to fmt_size_t. + (symbol_find_odo_debug): Likewise. + (symbols_dump): Likewise. + (calculate_capacity): Likewise. + (field_str): Likewise. + (symbols_update): Likewise. + (symbol_field_forward): Likewise. + (numeric_group_attrs): Return uint64_t rather than size_t and + change inherit variable to from size_t to uint64_t. + (new_literal_add): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead + of "%zd" and cast corresponding argument to fmt_size_t. + (temporaries_t::dump): Likewise. + (cbl_label_t::str): Likewise. + (symbol_label_add): Likewise. + (symbol_program_add): Likewise. + (symbol_forward_names): Likewise. + (symbol_forward_to): Likewise. + (cbl_file_key_t::deforward): Likewise. + (cbl_file_key_t::str): Likewise. + * gengen.cc (show_type): Use PRId64 instead of "ld". + (gg_unique_in_function): Use HOST_SIZE_T_PRINT_DEC instead of + %ld and cast corresponding argument to fmt_size_t. + * scan.l: Add %top section with #include "config.h". + * genmath.cc (parser_add): Use HOST_SIZE_T_PRINT_DEC instead of + %ld and cast corresponding argument to fmt_size_t. + (parser_subtract): Likewise. + * parse.y: Include "config.h" before <fstream>. Use + HOST_SIZE_T_PRINT_UNSIGNED instead of "%zu" and cast corresponding + argument to fmt_size_t. Change type of sign_attrs, group_sign and + type_implies from size_t to uint64_t. + (perform_t::ec_labels_t::new_label): Use HOST_SIZE_T_PRINT_UNSIGNED + instead of "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC + instead of "%zd" and cast corresponding argument to fmt_size_t. + (stringify_src_t::dump): Likewise. + (lang_check_failed): Likewise. + (numstr2i): Use GCC_PRISZ instead of "z" and pass address of temporary + with fmt_size_t type to sscanf and then copy it over. + (initialize_statement): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead + of "%zd" and cast corresponding argument to fmt_size_t. + (dump_inspect_oper): Likewise. + (new_literal): Likewise. + (literal_subscripts_valid): Likewise. + (eval_subject_t::label): Likewise. + * genapi.cc (level_88_helper): Likewise. + (parser_call_targets_dump): Likewise. + (combined_name): Use HOST_SIZE_T_PRINT_DEC instead of "%ld" + and cast corresponding argument to fmt_size_t. + (section_label): Likewise. + (paragraph_label): Likewise. + (leave_procedure): Likewise. + (parser_perform): Likewise. + (parser_perform_times): Likewise. + (internal_perform_through): Likewise. + (internal_perform_through_times): Likewise. + (parser_enter_program): Likewise. + (parser_init_list_size): Likewise. + (parser_init_list): Likewise. + (psa_FldLiteralN): Likewise. + (psa_FldBlob): Likewise. + (parser_assign): Likewise. + (parser_free): Pass p->field->name to dbgmsg. + (parser_division): Use HOST_SIZE_T_PRINT_DEC instead of "%ld" + and cast corresponding argument to fmt_size_t. + (perform_outofline_before_until): Likewise. + (perform_outofline_after_until): Likewise. + (perform_outofline_testafter_varying): Likewise. + (perform_outofline_before_varying): Likewise. + (perform_inline_testbefore_varying): Likewise. + (parser_inspect): Change n_operations parameter type from + unsigned long to size_t. + (parser_intrinsic_callv): Use HOST_SIZE_T_PRINT_DEC instead + of "%zd" and cast corresponding argument to fmt_size_t. + (parser_bitop): Use HOST_SIZE_T_PRINT_HEX_PURE instead of + "%lx" and cast corresponding argument to fmt_size_t. + (parser_bitwise_op): Likewise. + (parser_program_hierarchy): Use HOST_SIZE_T_PRINT_DEC instead of "%ld" + and cast corresponding argument to fmt_size_t. + (parser_set_handled): Use HOST_SIZE_T_PRINT_HEX_PURE instead of + "%lx" and cast corresponding argument to fmt_size_t. + (parser_set_numeric): Use HOST_SIZE_T_PRINT_DEC instead of "%ld" + and cast corresponding argument to fmt_size_t. + (psa_new_var_decl): Use HOST_SIZE_T_PRINT_DEC instead of "%ld" + and cast corresponding argument to fmt_size_t. + (parser_symbol_add): Use HOST_SIZE_T_PRINT_DEC instead of "%zd" + or HOST_SIZE_T_PRINT_HEX_PURE instead of "%lx" and cast corresponding + argument to fmt_size_t. + * cdf-copy.cc: Include "config.h" first. + * scan_ante.h (trim_location): Use HOST_SIZE_T_PRINT_UNSIGNED instead + of "%zu" or "%d" and cast corresponding argument to fmt_size_t. + * structs.cc (create_cblc_field_t): Use ULONGLONG instead of SIZE + for "attr". + * cbldiag.h (dbgmsg): Add ATTRIBUTE_PRINTF_1. + * gcobolspec.cc (lang_specific_driver): Use HOST_SIZE_T_PRINT_DEC + instead of "%ld" and cast corresponding argument to fmt_size_t. + * parse_ante.h (literal_of): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead + of "%zd" and cast corresponding argument to fmt_size_t. + (evaluate_elem_t::dump): Likewise. + (arith_t::another_pair): Likewise. + (current_t::end_program): Likewise. + (file_add): Likewise. + (implicit_paragraph): Likewise. + (implicit_section): Likewise. + (data_division_ready): Use HOST_SIZE_T_PRINT_DEC instead of "%d" + and cast corresponding argument to fmt_size_t. + * symbols.h (struct cbl_field_t): Change attr member type from size_t + to uint64_t. + (cbl_field_t::set_attr): Change return type from size_t to uint64_t. + (cbl_field_t::clear_attr): Likewise. + (function_descr_t::init): Use HOST_SIZE_T_PRINT_UNSIGNED instead of + "%zu" or GCC_PRISZ instead of "z" or HOST_SIZE_T_PRINT_DEC instead + of "%zd" and cast corresponding argument to fmt_size_t. + (cbl_perform_tgt_t::dump): Likewise. + (numeric_group_attrs): Change return type from size_t to uint64_t. + 2025-04-24 Robert Dubner <rdubner@symas.com> * genapi.cc: (initialize_variable_internal): Change TRACE1 formatting. diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index 0c808c2..5ad47e1 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -22025,6 +22025,15 @@ vec_fp_conversion_cost (const struct processor_costs *cost, int size) return cost->vcvtps2pd512; } +/* Return true of X is UNSPEC with UNSPEC_PCMP or UNSPEC_UNSIGNED_PCMP. */ + +static bool +unspec_pcmp_p (rtx x) +{ + return GET_CODE (x) == UNSPEC + && (XINT (x, 1) == UNSPEC_PCMP || XINT (x, 1) == UNSPEC_UNSIGNED_PCMP); +} + /* Compute a (partial) cost for rtx X. Return true if the complete cost has been computed, and false if subexpressions should be scanned. In either case, *TOTAL contains the cost result. */ @@ -22807,14 +22816,77 @@ ix86_rtx_costs (rtx x, machine_mode mode, int outer_code_i, int opno, case VEC_MERGE: mask = XEXP (x, 2); + /* Scalar versions of SSE instructions may be represented as: + + (vec_merge (vec_duplicate (operation ....)) + (register or memory) + (const_int 1)) + + In this case vec_merge and vec_duplicate is for free. + Just recurse into operation and second operand. */ + if (mask == const1_rtx + && GET_CODE (XEXP (x, 0)) == VEC_DUPLICATE) + { + *total = rtx_cost (XEXP (XEXP (x, 0), 0), mode, + outer_code, opno, speed) + + rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed); + return true; + } /* This is masked instruction, assume the same cost, as nonmasked variant. */ - if (TARGET_AVX512F && register_operand (mask, GET_MODE (mask))) - *total = rtx_cost (XEXP (x, 0), mode, outer_code, opno, speed); + else if (TARGET_AVX512F && register_operand (mask, GET_MODE (mask))) + { + *total = rtx_cost (XEXP (x, 0), mode, outer_code, opno, speed) + + rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed); + return true; + } + /* Combination of the two above: + + (vec_merge (vec_merge (vec_duplicate (operation ...)) + (register or memory) + (reg:QI mask)) + (register or memory) + (const_int 1)) + + i.e. avx512fp16_vcvtss2sh_mask. */ + else if (TARGET_AVX512F + && mask == const1_rtx + && GET_CODE (XEXP (x, 0)) == VEC_MERGE + && GET_CODE (XEXP (XEXP (x, 0), 0)) == VEC_DUPLICATE + && register_operand (XEXP (XEXP (x, 0), 2), + GET_MODE (XEXP (XEXP (x, 0), 2)))) + { + *total = rtx_cost (XEXP (XEXP (XEXP (x, 0), 0), 0), + mode, outer_code, opno, speed) + + rtx_cost (XEXP (XEXP (x, 0), 1), + mode, outer_code, opno, speed) + + rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed); + return true; + } + /* vcmp. */ + else if (unspec_pcmp_p (mask) + || (GET_CODE (mask) == NOT + && unspec_pcmp_p (XEXP (mask, 0)))) + { + rtx uns = GET_CODE (mask) == NOT ? XEXP (mask, 0) : mask; + rtx unsop0 = XVECEXP (uns, 0, 0); + /* Make (subreg:V4SI (not:V16QI (reg:V16QI ..)) 0) + cost the same as register. + This is used by avx_cmp<mode>3_ltint_not. */ + if (GET_CODE (unsop0) == SUBREG) + unsop0 = XEXP (unsop0, 0); + if (GET_CODE (unsop0) == NOT) + unsop0 = XEXP (unsop0, 0); + *total = rtx_cost (XEXP (x, 0), mode, outer_code, opno, speed) + + rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed) + + rtx_cost (unsop0, mode, UNSPEC, opno, speed) + + rtx_cost (XVECEXP (uns, 0, 1), mode, UNSPEC, opno, speed) + + cost->sse_op; + return true; + } else - /* ??? We should still recruse when computing cost. */ *total = cost->sse_op; - return true; + return false; case MEM: /* CONST_VECTOR_DUPLICATE_P in constant_pool is just broadcast. @@ -22831,7 +22903,7 @@ ix86_rtx_costs (rtx x, machine_mode mode, int outer_code_i, int opno, } /* An insn that accesses memory is slightly more expensive - than one that does not. */ + than one that does not. */ if (speed) { *total += 1; diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d50293c..a99a1cc 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,22 @@ +2025-05-02 Jason Merrill <jason@redhat.com> + + PR c++/115207 + * decl.cc (cp_finish_decl): Call layout_decl after CTAD. + +2025-05-02 Jason Merrill <jason@redhat.com> + + PR c++/120012 + * cp-tree.h (struct lang_type): Add non_aggregate_pod. + (CLASSTYPE_NON_AGGREGATE_POD): New. + * class.cc (check_bases_and_members): Set it. + (check_non_pod_aggregate): Diagnose it. + +2025-05-02 Jakub Jelinek <jakub@redhat.com> + + PR c++/117827 + * init.cc (build_vec_init): Push to *cleanup_flags clearing of rval + instead of setting of iterator to maxindex. + 2025-05-01 Patrick Palka <ppalka@redhat.com> * constexpr.cc (explain_invalid_constexpr_fn): In the diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc index 7c4d8e6..7bcbe11 100644 --- a/gcc/simplify-rtx.cc +++ b/gcc/simplify-rtx.cc @@ -3063,6 +3063,10 @@ simplify_with_subreg_not (rtx_code binop, machine_mode mode, rtx op0, rtx op1) XEXP (SUBREG_REG (opn), 0), GET_MODE (SUBREG_REG (opn)), SUBREG_BYTE (opn)); + + if (!new_subreg) + return NULL_RTX; + rtx new_not = simplify_gen_unary (NOT, mode, new_subreg, mode); if (opn == op0) return simplify_gen_binary (binop, mode, new_not, op1); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 354a2ad..0c034bf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,59 @@ +2025-05-02 Andrew Pinski <quic_apinski@quicinc.com> + + PR rtl-optimization/120059 + * gcc.dg/torture/pr120059-1.c: New test. + +2025-05-02 Jakub Jelinek <jakub@redhat.com> + + PR c/120057 + * gcc.dg/cpp/embed-18.c: New test. + * gcc.dg/pr120057-1.c: New test. + * gcc.dg/pr120057-2.c: New test. + +2025-05-02 Jakub Jelinek <jakub@redhat.com> + Andrew MacLeod <amacleod@redhat.com> + + PR c/117023 + * gcc.dg/tree-ssa/pr78154-2.c: New test. + +2025-05-02 Jason Merrill <jason@redhat.com> + + PR c++/115207 + * g++.dg/cpp1z/class-deduction118.C: New test. + +2025-05-02 Jason Merrill <jason@redhat.com> + + * g++.dg/cpp1y/constexpr-89285.C: Always diagnose reinterpret_cast. + * g++.dg/cpp23/constexpr-nonlit19.C: Remove ~A body. + +2025-05-02 Jason Merrill <jason@redhat.com> + + PR c++/120012 + * g++.dg/abi/base-defaulted1.C: New test. + * g++.dg/abi/base-defaulted1a.C: New test. + +2025-05-02 Jason Merrill <jason@redhat.com> + + PR c++/60336 + * g++.dg/abi/pr60336-8a.C: New test. + +2025-05-02 Filip Kastl <fkastl@suse.cz> + + * gcc.dg/tree-ssa/switch-5.c: New test. + * gcc.dg/tree-ssa/switch-6.c: New test. + +2025-05-02 Florian Weimer <fweimer@redhat.com> + + * gcc.dg/Wdeprecated-non-prototype-6.c: New test. + +2025-05-02 Jennifer Schmitz <jschmitz@nvidia.com> + + * gcc.target/aarch64/sve/extract_last_128.c: New test. + * gcc.target/aarch64/sve/extract_1.c: Adjust expected outcome. + * gcc.target/aarch64/sve/extract_2.c: Likewise. + * gcc.target/aarch64/sve/extract_3.c: Likewise. + * gcc.target/aarch64/sve/extract_4.c: Likewise. + 2025-05-01 Christopher Bazley <chris.bazley@arm.com> PR c/119317 diff --git a/gcc/testsuite/gcc.dg/cpp/embed-18.c b/gcc/testsuite/gcc.dg/cpp/embed-18.c new file mode 100644 index 0000000..198a6db --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/embed-18.c @@ -0,0 +1,7 @@ +/* PR c/120057 */ +/* { dg-do compile } */ +/* { dg-options "-std=c23 --embed-dir=${srcdir}/c-c++-common/cpp/embed-dir" } */ + +constexpr unsigned char magna_carta[] = { +#embed <magna-carta.txt> +}; diff --git a/gcc/testsuite/gcc.dg/pr120057-1.c b/gcc/testsuite/gcc.dg/pr120057-1.c new file mode 100644 index 0000000..8832de6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr120057-1.c @@ -0,0 +1,18 @@ +/* PR c/120057 */ +/* { dg-do compile } */ +/* { dg-options "-std=c23" } */ + +constexpr char foo[65] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1 +}; +constexpr char bar[66] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2 +}; diff --git a/gcc/testsuite/gcc.dg/pr120057-2.c b/gcc/testsuite/gcc.dg/pr120057-2.c new file mode 100644 index 0000000..1372baf --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr120057-2.c @@ -0,0 +1,11 @@ +/* PR c/120057 */ +/* { dg-do compile } */ +/* { dg-options "-std=c23" } */ + +constexpr signed char foo[65] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 129, 11, 12, 13, 14, 15, 16, /* { dg-error "'constexpr' initializer not representable in type of object" } */ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 1 +}; diff --git a/gcc/testsuite/gcc.dg/torture/pr120059-1.c b/gcc/testsuite/gcc.dg/torture/pr120059-1.c new file mode 100644 index 0000000..36d0c5b --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr120059-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-g" } */ + +/* PR rtl-optimization/120059 */ + +int a[4]; +int c, d; +void f(void) { + for (int e = 0; e < 4; e++) + a[e] = e | c; + int b = 0; + if ((a[0] & 1) && (a[0] & 4)) + b = 2; + if (a[0] & 16) + b |= 1; + d = ~b; +} |