aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog62
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/c-family/c-lex.cc7
-rw-r--r--gcc/c/ChangeLog12
-rw-r--r--gcc/config/i386/cygming.h2
-rw-r--r--gcc/cp/ChangeLog15
-rw-r--r--gcc/cp/module.cc4
-rw-r--r--gcc/testsuite/ChangeLog39
-rw-r--r--gcc/testsuite/c-c++-common/cpp/pragma-diagnostic-loc-2.c15
-rw-r--r--gcc/testsuite/g++.dg/gomp/macro-4.C8
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-11_a.H9
-rw-r--r--gcc/testsuite/g++.dg/modules/concept-11_b.C9
-rw-r--r--gcc/testsuite/gcc.dg/cpp/Wunknown-pragmas-1.c22
-rw-r--r--gcc/testsuite/gcc.dg/gomp/macro-4.c8
-rw-r--r--gcc/testsuite/gcc.dg/graphite/id-15.c2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/infoleak-net-ethtool-ioctl.c3
-rw-r--r--gcc/tree-tailcall.cc3
-rw-r--r--libcpp/errors.cc10
-rw-r--r--libcpp/include/cpplib.h2
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