diff options
-rw-r--r-- | gcc/ChangeLog | 62 | ||||
-rw-r--r-- | gcc/DATESTAMP | 2 | ||||
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-lex.cc | 7 | ||||
-rw-r--r-- | gcc/c/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/i386/cygming.h | 2 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/cp/module.cc | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 39 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/cpp/pragma-diagnostic-loc-2.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/macro-4.C | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/concept-11_a.H | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/concept-11_b.C | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c | 22 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/gomp/macro-4.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/graphite/id-15.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/plugin/infoleak-net-ethtool-ioctl.c | 3 | ||||
-rw-r--r-- | gcc/tree-tailcall.cc | 3 | ||||
-rw-r--r-- | libcpp/errors.cc | 10 | ||||
-rw-r--r-- | libcpp/include/cpplib.h | 2 |
20 files changed, 213 insertions, 27 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b8058d..5e84f05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,65 @@ +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR c/48274 + PR middle-end/112877 + PR middle-end/118288 + * gimple.cc (gimple_builtin_call_types_compatible_p): Remove the + targetm.calls.promote_prototypes call. + * tree.cc (tree_builtin_call_types_compatible_p): Likewise. + +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * calls.cc (initialize_argument_information): Promote small integer + arguments if TARGET_PROMOTE_PROTOTYPES returns true. + +2025-04-27 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_const_vector): Extract + const vector stepped into separated func. + (expand_const_vector_single_step_npatterns): Add new func + to take care of single step. + (expand_const_vector_interleaved_stepped_npatterns): Add new + func to take care of interleaved step. + (expand_const_vector_stepped): Add new func to take care of + const vector stepped. + +2025-04-27 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_const_vector_duplicate_repeating): + Add new func to take care of vector duplicate with repeating. + (expand_const_vector_duplicate_default): Add new func to take + care of default const vector duplicate. + (expand_const_vector_duplicate): Add new func to take care + of all const vector duplicate. + (expand_const_vector): Extract const vector duplicate into + separated function. + +2025-04-27 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_const_vec_series): Add new + func to take care of the const vec_series. + (expand_const_vector): Extract const vec_series into separated + function. + +2025-04-27 Pan Li <pan2.li@intel.com> + + * config/riscv/riscv-v.cc (expand_const_vector): Extract + const vec_duplicate into separated function. + (expand_const_vec_duplicate): Add new func to take care + of the const vec_duplicate. + +2025-04-27 liuhongt <hongtao.liu@intel.com> + + PR target/119549 + * common/config/i386/i386-common.cc (ix86_handle_option): + Refactor msse4 and mno-sse4. + * config/i386/i386.opt (msse4): Remove RejectNegative. + (mno-sse4): Remove the entry. + * config/i386/i386-options.cc + (ix86_valid_target_attribute_inner_p): Remove special code + which handles mno-sse4. + 2025-04-26 Jan Hubicka <hubicka@ucw.cz> PR target/105275 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index bcfb36f..bd9df64 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20250427 +20250428 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 650de8b..5ec1e24 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * gcc-interface/utils.cc (create_param_decl): Remove the + targetm.calls.promote_prototypes call. + 2025-04-17 Jakub Jelinek <jakub@redhat.com> * gnatvsn.ads: Bump Library_Version to 16. diff --git a/gcc/c-family/c-lex.cc b/gcc/c-family/c-lex.cc index e450c9a..fef6ae6 100644 --- a/gcc/c-family/c-lex.cc +++ b/gcc/c-family/c-lex.cc @@ -248,7 +248,12 @@ cb_def_pragma (cpp_reader *pfile, location_t loc) { const unsigned char *space, *name; const cpp_token *s; - location_t fe_loc = loc; + + /* If we are processing a _Pragma, LOC is not a valid location, but libcpp + will provide a good location via this function instead. */ + location_t fe_loc = cpp_get_diagnostic_override_loc (pfile); + if (fe_loc == UNKNOWN_LOCATION) + fe_loc = loc; space = name = (const unsigned char *) ""; diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index f75a0f6..c8f9206 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,15 @@ +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR c/48274 + PR middle-end/112877 + PR middle-end/118288 + * c-decl.cc (start_decl): Remove the + targetm.calls.promote_prototypes call. + (store_parm_decls_oldstyle): Likewise. + (finish_function): Likewise. + * c-typeck.cc (convert_argument): Likewise. + (c_safe_arg_type_equiv_p): Likewise. + 2025-04-15 Qing Zhao <qing.zhao@oracle.com> PR c/119717 diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index 3ddcbec..d587d25 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -36,7 +36,7 @@ along with GCC; see the file COPYING3. If not see /* 32-bit Windows aligns the stack on a 4-byte boundary but SSE instructions may require 16-byte alignment. */ #undef STACK_REALIGN_DEFAULT -#define STACK_REALIGN_DEFAULT TARGET_SSE +#define STACK_REALIGN_DEFAULT (TARGET_64BIT ? 0 : 1) /* Support hooks for SEH. */ #undef TARGET_ASM_UNWIND_EMIT diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d092553..9d5db06 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,18 @@ +2025-04-27 Nathaniel Shead <nathanieloshead@gmail.com> + + PR c++/119939 + * module.cc (trees_out::lang_decl_vals): Also stream + lang->u.fn.context when DECL_UNIQUE_FRIEND_P. + (trees_in::lang_decl_vals): Likewise. + +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * call.cc (type_passed_as): Remove the + targetm.calls.promote_prototypes call. + (convert_for_arg_passing): Likewise. + * typeck.cc (cxx_safe_arg_type_equiv_p): Likewise. + 2025-04-25 Jason Merrill <jason@redhat.com> PR c++/119764 diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index 5ff5c46..a2e0d6d 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -7386,7 +7386,7 @@ trees_out::lang_decl_vals (tree t) WU (lang->u.fn.ovl_op_code); } - if (DECL_CLASS_SCOPE_P (t)) + if (DECL_CLASS_SCOPE_P (t) || DECL_UNIQUE_FRIEND_P (t)) WT (lang->u.fn.context); if (lang->u.fn.thunk_p) @@ -7470,7 +7470,7 @@ trees_in::lang_decl_vals (tree t) lang->u.fn.ovl_op_code = code; } - if (DECL_CLASS_SCOPE_P (t)) + if (DECL_CLASS_SCOPE_P (t) || DECL_UNIQUE_FRIEND_P (t)) RT (lang->u.fn.context); if (lang->u.fn.thunk_p) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9896f7f..314de8d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,42 @@ +2025-04-27 Nathaniel Shead <nathanieloshead@gmail.com> + + PR c++/119939 + * g++.dg/modules/concept-11_a.H: New test. + * g++.dg/modules/concept-11_b.C: New test. + +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * gcc.dg/tree-ssa/ssa-fre-4.c: Enable for all targets and adjust + scan match. + +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * gcc.dg/tree-ssa/scev-cast.c: Enable for all targets and adjust + scan match. + +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * gcc.dg/vect/vect-simd-clone-16c.c: Expect in-branch clones for + x86. + * gcc.dg/vect/vect-simd-clone-16d.c: Likewise. + * gcc.dg/vect/vect-simd-clone-17c.c: Likewise. + * gcc.dg/vect/vect-simd-clone-17d.c: Likewise. + * gcc.dg/vect/vect-simd-clone-18c.c: Likewise. + * gcc.dg/vect/vect-simd-clone-18d.c: Likewise. + +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * gcc.target/i386/apx-ndd.c: Adjusted. + +2025-04-27 H.J. Lu <hjl.tools@gmail.com> + + PR middle-end/112877 + * gfortran.dg/pr112877-1.f90: New test. + 2025-04-25 Dimitar Dimitrov <dimitar@dinux.eu> * g++.dg/ipa/pr83549.C: Require effective target diff --git a/gcc/testsuite/c-c++-common/cpp/pragma-diagnostic-loc-2.c b/gcc/testsuite/c-c++-common/cpp/pragma-diagnostic-loc-2.c new file mode 100644 index 0000000..734da21 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/pragma-diagnostic-loc-2.c @@ -0,0 +1,15 @@ +/* PR c/118838 */ +/* { dg-do compile } */ +/* { dg-additional-options "-Wunknown-pragmas" } */ + +/* Make sure the warnings are suppressed as expected. */ + +/* The tokens need to be all on the same line here. */ +_Pragma ("GCC diagnostic push") _Pragma ("GCC diagnostic ignored \"-Wunknown-pragmas\"") _Pragma ("__unknown__") _Pragma ("GCC diagnostic pop") + +#define MACRO \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wunknown-pragmas\"") \ + _Pragma ("__unknown__") \ + _Pragma ("GCC diagnostic pop") +MACRO diff --git a/gcc/testsuite/g++.dg/gomp/macro-4.C b/gcc/testsuite/g++.dg/gomp/macro-4.C index dcc8bcb..5aa6d97 100644 --- a/gcc/testsuite/g++.dg/gomp/macro-4.C +++ b/gcc/testsuite/g++.dg/gomp/macro-4.C @@ -3,7 +3,7 @@ // { dg-options "-fopenmp -Wunknown-pragmas" } #define p _Pragma ("omp parallel") -#define omp_p _Pragma ("omp p") +#define omp_p _Pragma ("omp p") // { dg-warning "ignoring '#pragma omp _Pragma'" } void bar (void); @@ -12,18 +12,18 @@ foo (void) { #pragma omp p // { dg-warning "-:ignoring '#pragma omp _Pragma'" } bar (); - omp_p // { dg-warning "-:ignoring '#pragma omp _Pragma'" } + omp_p // { dg-note "in expansion of macro 'omp_p'" } bar (); } #define parallel serial -#define omp_parallel _Pragma ("omp parallel") +#define omp_parallel _Pragma ("omp parallel") // { dg-warning "ignoring '#pragma omp serial'" } void baz (void) { #pragma omp parallel // { dg-warning "-:ignoring '#pragma omp serial'" } bar (); - omp_parallel // { dg-warning "-:ignoring '#pragma omp serial'" } + omp_parallel // { dg-note "in expansion of macro 'omp_parallel'" } bar (); } diff --git a/gcc/testsuite/g++.dg/modules/concept-11_a.H b/gcc/testsuite/g++.dg/modules/concept-11_a.H new file mode 100644 index 0000000..4512768 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/concept-11_a.H @@ -0,0 +1,9 @@ +// PR c++/119939 +// { dg-additional-options "-fmodule-header -std=c++20" } +// { dg-module-cmi {} } + +template <typename T> concept A = true; +template <typename T> concept B = requires { T{}; }; +template <typename T> struct S { + friend bool operator==(const S&, const S&) requires B<T> = default; +}; diff --git a/gcc/testsuite/g++.dg/modules/concept-11_b.C b/gcc/testsuite/g++.dg/modules/concept-11_b.C new file mode 100644 index 0000000..3f6676f --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/concept-11_b.C @@ -0,0 +1,9 @@ +// PR c++/119939 +// { dg-additional-options "-fmodules -std=c++20" } + +import "concept-11_a.H"; + +int main() { + S<int> s; + s == s; +} diff --git a/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c b/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c index 06a244e..f3c7901 100644 --- a/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c +++ b/gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c @@ -8,21 +8,25 @@ #pragma unknown1 /* { dg-warning "-:unknown1" "unknown1" } */ #define COMMA , -#define FOO(x) x -#define BAR(x) _Pragma("unknown_before") x -#define BAZ(x) x _Pragma("unknown_after") +#define FOO(x) x /* { dg-note "in definition of macro 'FOO'" } */ -int _Pragma("unknown2") bar1; /* { dg-warning "-:unknown2" "unknown2" } */ +#define BAR1(x) _Pragma("unknown_before1") x /* { dg-warning "unknown_before1" } */ +#define BAR2(x) _Pragma("unknown_before2") x /* { dg-warning "unknown_before2" } */ -FOO(int _Pragma("unknown3") bar2); /* { dg-warning "-:unknown3" "unknown3" } */ +#define BAZ1(x) x _Pragma("unknown_after1") /* { dg-warning "unknown_after1" } */ +#define BAZ2(x) x _Pragma("unknown_after2") /* { dg-warning "unknown_after2" } */ -int BAR(bar3); /* { dg-warning "-:unknown_before" "unknown_before 1" } */ +int _Pragma("unknown2") bar1; /* { dg-warning "unknown2" "unknown2" } */ -BAR(int bar4); /* { dg-warning "-:unknown_before" "unknown_before 2" } */ +FOO(int _Pragma("unknown3") bar2); /* { dg-warning "unknown3" "unknown3" } */ -int BAZ(bar5); /* { dg-warning "-:unknown_after" "unknown_after 1" } */ +int BAR1(bar3); /* { dg-note "in expansion of macro 'BAR1'" } */ -int BAZ(bar6;) /* { dg-warning "-:unknown_after" "unknown_after 2" } */ +BAR2(int bar4); /* { dg-note "in expansion of macro 'BAR2'" } */ + +int BAZ1(bar5); /* { dg-note "in expansion of macro 'BAZ1'" } */ + +int BAZ2(bar6;) /* { dg-note "in expansion of macro 'BAZ2'" } */ FOO(int bar7; _Pragma("unknown4")) /* { dg-warning "-:unknown4" "unknown4" } */ diff --git a/gcc/testsuite/gcc.dg/gomp/macro-4.c b/gcc/testsuite/gcc.dg/gomp/macro-4.c index a4ed9a3..961c599 100644 --- a/gcc/testsuite/gcc.dg/gomp/macro-4.c +++ b/gcc/testsuite/gcc.dg/gomp/macro-4.c @@ -3,7 +3,7 @@ /* { dg-options "-fopenmp -Wunknown-pragmas" } */ #define p _Pragma ("omp parallel") -#define omp_p _Pragma ("omp p") +#define omp_p _Pragma ("omp p") /* { dg-warning "ignoring '#pragma omp _Pragma'" } */ void bar (void); @@ -12,18 +12,18 @@ foo (void) { #pragma omp p /* { dg-warning "-:ignoring '#pragma omp _Pragma'" } */ bar (); - omp_p /* { dg-warning "-:ignoring '#pragma omp _Pragma'" } */ + omp_p /* { dg-note "in expansion of macro 'omp_p'" } */ bar (); } #define parallel serial -#define omp_parallel _Pragma ("omp parallel") +#define omp_parallel _Pragma ("omp parallel") /* { dg-warning "ignoring '#pragma omp serial'" } */ void baz (void) { #pragma omp parallel /* { dg-warning "-:ignoring '#pragma omp serial'" } */ bar (); - omp_parallel /* { dg-warning "-:ignoring '#pragma omp serial'" } */ + omp_parallel /* { dg-note "in expansion of macro 'omp_parallel'" } */ bar (); } diff --git a/gcc/testsuite/gcc.dg/graphite/id-15.c b/gcc/testsuite/gcc.dg/graphite/id-15.c index d0a804c..d258ef5 100644 --- a/gcc/testsuite/gcc.dg/graphite/id-15.c +++ b/gcc/testsuite/gcc.dg/graphite/id-15.c @@ -1,7 +1,7 @@ /* { dg-additional-options "-Wno-old-style-definition" } */ /* { dg-require-effective-target int32plus } */ -typedef long unsigned int size_t; +typedef __SIZE_TYPE__ size_t; extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); static void diff --git a/gcc/testsuite/gcc.dg/plugin/infoleak-net-ethtool-ioctl.c b/gcc/testsuite/gcc.dg/plugin/infoleak-net-ethtool-ioctl.c index 52846c4..afb4a57 100644 --- a/gcc/testsuite/gcc.dg/plugin/infoleak-net-ethtool-ioctl.c +++ b/gcc/testsuite/gcc.dg/plugin/infoleak-net-ethtool-ioctl.c @@ -11,8 +11,7 @@ typedef unsigned int __u32; typedef __s8 s8; typedef __u32 u32; enum { false = 0, true = 1 }; -typedef unsigned long __kernel_ulong_t; -typedef __kernel_ulong_t __kernel_size_t; +typedef __SIZE_TYPE__ __kernel_size_t; typedef _Bool bool; typedef __kernel_size_t size_t; diff --git a/gcc/tree-tailcall.cc b/gcc/tree-tailcall.cc index f593363..fc05928 100644 --- a/gcc/tree-tailcall.cc +++ b/gcc/tree-tailcall.cc @@ -827,8 +827,7 @@ find_tail_calls (basic_block bb, struct tailcall **ret, bool only_musttail, ? !is_gimple_reg (param) : (!is_gimple_variable (param) || TREE_THIS_VOLATILE (param) - || may_be_aliased (param) - || !gimple_call_must_tail_p (call))) + || may_be_aliased (param))) break; } } diff --git a/libcpp/errors.cc b/libcpp/errors.cc index 9621c4b..d9efb6a 100644 --- a/libcpp/errors.cc +++ b/libcpp/errors.cc @@ -52,6 +52,16 @@ cpp_diagnostic_get_current_location (cpp_reader *pfile) } } +/* Sometimes a diagnostic needs to be generated before libcpp has been able + to generate a valid location for the current token; in that case, the + non-zero location returned by this function is the preferred one to use. */ + +location_t +cpp_get_diagnostic_override_loc (const cpp_reader *pfile) +{ + return pfile->diagnostic_override_loc; +} + /* Print a diagnostic at the given location. */ ATTRIBUTE_CPP_PPDIAG (5, 0) diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 3bf33ab..7c147ae 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -1169,6 +1169,8 @@ extern const char *cpp_probe_header_unit (cpp_reader *, const char *file, extern const char *cpp_get_narrow_charset_name (cpp_reader *) ATTRIBUTE_PURE; extern const char *cpp_get_wide_charset_name (cpp_reader *) ATTRIBUTE_PURE; +extern location_t cpp_get_diagnostic_override_loc (const cpp_reader *); + /* This function reads the file, but does not start preprocessing. It returns the name of the original file; this is the same as the input file, except for preprocessed input. This will generate at |