diff options
| -rw-r--r-- | gcc/ChangeLog | 23 | ||||
| -rw-r--r-- | gcc/DATESTAMP | 2 | ||||
| -rw-r--r-- | gcc/ada/ChangeLog | 8 | ||||
| -rw-r--r-- | gcc/ada/sem_attr.adb | 47 | ||||
| -rw-r--r-- | gcc/analyzer/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/analyzer/kf.cc | 3 | ||||
| -rw-r--r-- | gcc/config/darwin-c.cc | 7 | ||||
| -rw-r--r-- | gcc/config/i386/sse.md | 3 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 178 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.target/i386/avx2-vpcmpgtq-1.c | 2 | ||||
| -rw-r--r-- | gcc/testsuite/gnat.dg/reduce3.adb | 17 | ||||
| -rw-r--r-- | libcpp/ChangeLog | 10 | ||||
| -rw-r--r-- | libcpp/files.cc | 28 | ||||
| -rw-r--r-- | libcpp/include/cpplib.h | 6 | ||||
| -rw-r--r-- | libcpp/internal.h | 3 |
15 files changed, 290 insertions, 52 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed720db..6c0c42e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,26 @@ +2025-12-07 Jason Merrill <jason@redhat.com> + + * config/darwin-c.cc (find_subframework_header): Use + _cpp_get_file_*. + +2025-12-07 H.J. Lu <hjl.tools@gmail.com> + + PR target/122343 + * common.opt: Add -ffuse-ops-with-volatile-access. + * common.opt.urls: Regenerated. + * recog.cc (general_operand): Allow volatile memory reference if + -ffuse-ops-with-volatile-access is enabled. + * simplify-rtx.cc (simplify_binary_operation_1): Keep PLUS for 2 + volatile memory references. + * doc/invoke.texi: Document -ffuse-ops-with-volatile-access. + +2025-12-07 Alexandre Oliva <oliva@adacore.com> + + * cselib.cc (dump_cselib_val): Split out of and rename to... + (dump_cselib_val_ptr): ... this. + (dump_cselib_table): Adjust. Skip cselib_preserved_hash_table + when not allocated. + 2025-12-06 Alexandre Oliva <oliva@adacore.com> PR rtl-optimization/122947 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 47f4b89..f674ed1 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20251207 +20251208 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index fca1a9e..2067233 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,11 @@ +2025-12-07 Eric Botcazou <ebotcazou@adacore.com> + + PR ada/115349 + * sem_attr.adb (Resolve_Attribute) <Attribute_Reduce>: Use the base + type as Accum_Type if the reducer is an operator from Standard and + the type is numeric. Use the type of the first operand for other + operators. Streamline the error message given for limited types. + 2025-12-06 Denis Mazzucato <mazzucato@adacore.com> * sem_attr.adb (Resolve_Attribute): Check if the reducer is a diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index ca19cad..74e9d6f 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -12919,7 +12919,7 @@ package body Sem_Attr is -- Where the context is augmented with the iteration -- variable I of the right type, and Init_Var of type - -- Accum_Subtype. If the Reducer has both procedure and + -- Accum_Typ. If the Reducer has both procedure and -- function interpretations with the proper reducer profile -- an ambiguity error is emitted. Note that, this could be a -- false positive as the two may coexist without ambiguity @@ -13204,7 +13204,7 @@ package body Sem_Attr is return; end if; - -- If no error has been posted and the accumulation type is + -- If no error has been posted and the accumulator type is -- constrained, then the resolution of the reducer can start. if Nkind (Reducer_N) = N_Attribute_Reference then @@ -13252,44 +13252,50 @@ package body Sem_Attr is end if; end if; - -- After resolving the reducer, determine the correct - -- Accum_Subtype: if the reducer is an attribute (Min or Max), - -- then the prefix type is the accumulation type. + -- After resolving the reducer, determine Accum_Typ: if the + -- reducer is an attribute (Min or Max), then its prefix is + -- the accumulator type. if Nkind (Reducer_E) = N_Attribute_Reference then - Accum_Typ := Etype (Prefix (Reducer_E)); + Accum_Typ := Entity (Prefix (Reducer_E)); - -- If an operator from standard, then the type of its first - -- formal woudl be Any_Type, in this case we make sure we don't - -- use an universal type to avoid resolution problems later on. + -- If the reducer is an operator from Standard, then the type + -- of its first operand would be Any_Type. In this case, make + -- sure we do not have an universal type to avoid resolution + -- problems later on, and use the base type of numeric types + -- to avoid spurious subtype mismatches for the initial value. - elsif Ekind (Reducer_E) = E_Operator - or else Scope (Reducer_E) = Standard_Standard - then + elsif Scope (Reducer_E) = Standard_Standard then if Accum_Typ = Universal_Integer then Accum_Typ := Standard_Integer; elsif Accum_Typ = Universal_Real then Accum_Typ := Standard_Float; + elsif Is_Numeric_Type (Accum_Typ) then + Accum_Typ := Base_Type (Accum_Typ); end if; - -- Otherwise, the Accum_Subtype is the subtype of the first - -- formal of the reducer subprogram RM 4.5.10(19/5). + -- Otherwise, Accum_Typ is the subtype of the first formal + -- of the reducer subprogram (RM 4.5.10(19/5)). + + elsif Ekind (Reducer_E) = E_Operator then + Accum_Typ := Etype (Left_Opnd (Reducer_E)); else Accum_Typ := Etype (First_Formal (Reducer_E)); end if; + Set_Etype (N, Accum_Typ); - -- Accumulation type must be nonlimited, RM 4.5.10(8/5) + -- The accumulator type must be nonlimited (RM 4.5.10(8/5)) if Is_Limited_Type (Accum_Typ) then Error_Msg_N - ("accumulated subtype of Reduce must be nonlimited", N); + ("type of reduction expression must be nonlimited", N); - -- If the Accum_Typ is an unconstrained array and the reducer + -- If Accum_Typ is an unconstrained array and the reducer -- subprogram is a function then a Constraint_Error will be - -- raised at runtime as most computations will change its - -- length type during the reduction execution, RM 4.5.10(25/5). + -- raised at run time, as most computations will change its + -- length during the reduction execution (RM 4.5.10(25/5)). -- For instance, this is the case with: -- [...]'Reduce ("&", ...) -- When the expression yields non-empty strings, the reduction @@ -13300,7 +13306,7 @@ package body Sem_Attr is elsif Nkind (Reducer_E) /= N_Attribute_Reference and then Ekind (Reducer_E) = E_Function - and then not Is_Numeric_Type (Base_Type (Accum_Typ)) + and then not Is_Numeric_Type (Accum_Typ) and then not Is_Constrained (Accum_Typ) then declare @@ -13318,6 +13324,7 @@ package body Sem_Attr is -- resolving the initial expression and array aggregate. Resolve (Init_Value_Expr, Accum_Typ); + if Nkind (P) = N_Aggregate then Resolve_Aggregate (P, Make_Array_Type (Index => Standard_Positive, diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog index 58fc1f4..9ede664 100644 --- a/gcc/analyzer/ChangeLog +++ b/gcc/analyzer/ChangeLog @@ -1,3 +1,8 @@ +2025-12-07 David Malcolm <dmalcolm@redhat.com> + + * kf.cc (register_known_functions): Remove duplicate calls to + register_atomic_builtins and register_varargs_builtins. + 2025-11-28 Jakub Jelinek <jakub@redhat.com> * known-function-manager.cc (known_function_manager::add): Avoid diff --git a/gcc/analyzer/kf.cc b/gcc/analyzer/kf.cc index b3c02e8..c9818de 100644 --- a/gcc/analyzer/kf.cc +++ b/gcc/analyzer/kf.cc @@ -2334,9 +2334,6 @@ register_known_functions (known_function_manager &kfm, kfm.add ("__builtin_strlen", std::make_unique<kf_strlen> ()); kfm.add ("strstr", std::make_unique<kf_strstr> ()); kfm.add ("__builtin_strstr", std::make_unique<kf_strstr> ()); - - register_atomic_builtins (kfm); - register_varargs_builtins (kfm); } /* Known POSIX functions, and some non-standard extensions. */ diff --git a/gcc/config/darwin-c.cc b/gcc/config/darwin-c.cc index 7257015..c3a1cd5 100644 --- a/gcc/config/darwin-c.cc +++ b/gcc/config/darwin-c.cc @@ -537,17 +537,18 @@ find_subframework_header (cpp_reader *pfile, const char *header, cpp_dir **dirp) const char *n; for (b = cpp_get_buffer (pfile); - b && cpp_get_file (b) && cpp_get_path (cpp_get_file (b)); + b && cpp_get_file (b) && _cpp_get_file_path (cpp_get_file (b)); b = cpp_get_prev (b)) { - n = find_subframework_file (fname, cpp_get_path (cpp_get_file (b))); + n = find_subframework_file (fname, + _cpp_get_file_path (cpp_get_file (b))); if (n) { /* Logically, the place where we found the subframework is the place where we found the Framework that contains the subframework. This is useful for tracking wether or not we are in a system header. */ - *dirp = cpp_get_dir (cpp_get_file (b)); + *dirp = _cpp_get_file_dir (cpp_get_file (b)); return n; } } diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 0be898c..fb79b2e 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -4900,7 +4900,8 @@ (match_operand:SI 3 "<cmp_imm_predicate>")] UNSPEC_PCMP_ITER))] "TARGET_AVX512F && ix86_pre_reload_split () - && rtx_equal_p (operands[1], operands[2])" + && rtx_equal_p (operands[1], operands[2]) + && (!MEM_P (operands[1]) || !MEM_VOLATILE_P (operands[1]))" "#" "&& 1" [(set (match_dup 0) (match_dup 4))] diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8f13d2c..e6918d4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,181 @@ +2025-12-07 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/reduce3.adb: New test. + +2025-12-07 H.J. Lu <hjl.tools@gmail.com> + + PR target/122343 + * gcc.target/i386/20040112-1.c: Add -fomit-frame-pointer and use + check-function-bodies to check for loop. + * gcc.target/i386/avx-ne-convert-1.c: Compile with + -fno-fuse-ops-with-volatile-access. + * gcc.target/i386/avx10_2-bf16-1.c: Likewise. + * gcc.target/i386/avx10_2-convert-1.c: Likewise. + * gcc.target/i386/avx10_2-satcvt-1.c: Likewise. + * gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c: Likewise. + * gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c: Likewise. + * gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c: Likewise. + * gcc.target/i386/avx512bitalg-vpshufbitqmb.c: Likewise. + * gcc.target/i386/avx512bw-vpcmpb-1.c: Likewise. + * gcc.target/i386/avx512bw-vpcmpub-1.c: Likewise. + * gcc.target/i386/avx512bw-vpcmpuw-1.c: Likewise. + * gcc.target/i386/avx512bw-vpcmpw-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvtps2qq-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvtps2uqq-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvtqq2pd-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvtqq2ps-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvttps2qq-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvttps2uqq-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvtuqq2pd-1.c: Likewise. + * gcc.target/i386/avx512dq-vcvtuqq2ps-1.c: Likewise. + * gcc.target/i386/avx512dq-vextractf32x8-1.c: Likewise. + * gcc.target/i386/avx512dq-vextractf64x2-1.c: Likewise. + * gcc.target/i386/avx512dq-vextracti64x2-1.c: Likewise. + * gcc.target/i386/avx512dq-vfpclasspd-1.c: Likewise. + * gcc.target/i386/avx512dq-vfpclassps-1.c: Likewise. + * gcc.target/i386/avx512dq-vfpclasssd-1.c: Likewise. + * gcc.target/i386/avx512dq-vfpclassss-1.c: Likewise. + * gcc.target/i386/avx512dq-vpmullq-1.c: Likewise. + * gcc.target/i386/avx512dq-vpmullq-3.c: Likewise. + * gcc.target/i386/avx512f-pr100267-1.c: Likewise. + * gcc.target/i386/avx512f-vcmppd-1.c: Likewise. + * gcc.target/i386/avx512f-vcmpps-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtps2pd-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsd2si-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsd2si64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsd2usi-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsd2usi64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtsi2ss-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtss2si-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtss2si64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtss2usi-1.c: Likewise. + * gcc.target/i386/avx512f-vcvtss2usi64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttsd2si-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttsd2si64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttsd2usi-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttsd2usi64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttss2si-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttss2si64-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttss2usi-1.c: Likewise. + * gcc.target/i386/avx512f-vcvttss2usi64-1.c: Likewise. + * gcc.target/i386/avx512f-vextractf32x4-1.c: Likewise. + * gcc.target/i386/avx512f-vextractf64x4-1.c: Likewise. + * gcc.target/i386/avx512f-vextracti64x4-1.c: Likewise. + * gcc.target/i386/avx512f-vmovapd-1.c: Likewise. + * gcc.target/i386/avx512f-vmovaps-1.c: Likewise. + * gcc.target/i386/avx512f-vmovdqa64-1.c: Likewise. + * gcc.target/i386/avx512f-vpandnq-1.c: Likewise. + * gcc.target/i386/avx512f-vpbroadcastd-1.c: Likewise. + * gcc.target/i386/avx512f-vpbroadcastq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpd-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpeqq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpequq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpged-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpgeq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpgeud-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpgeuq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpled-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpleq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpleud-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpleuq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpltd-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpltq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpltud-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpltuq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpneqd-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpneqq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpnequd-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpnequq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpq-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpud-1.c: Likewise. + * gcc.target/i386/avx512f-vpcmpuq-1.c: Likewise. + * gcc.target/i386/avx512f-vrndscalepd-1.c: Likewise. + * gcc.target/i386/avx512f-vrndscaleps-1.c: Likewise. + * gcc.target/i386/avx512fp16-complex-fma.c: Likewise. + * gcc.target/i386/avx512fp16-vaddph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtpd2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2dq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2pd-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2psx-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2qq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2udq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2uqq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2uw-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtph2w-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtps2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtqq2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvttph2dq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvttph2qq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvttph2udq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvttph2uqq-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvttph2uw-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvttph2w-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vcvtuqq2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vfcmaddcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vfcmulcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vfmaddcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vfmulcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vfpclassph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vfpclasssh-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vmulph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vrcpph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vrsqrtph-1a.c: Likewise. + * gcc.target/i386/avx512fp16-vsqrtph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vaddph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtpd2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtph2dq-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtph2psx-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtph2qq-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtph2udq-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtph2uqq-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtph2uw-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtph2w-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtps2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtqq2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvttph2dq-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvttph2udq-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvttph2uw-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvttph2w-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vcvtuqq2ph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vfcmaddcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vfcmulcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vfmaddcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vfmulcph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vfpclassph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vmulph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vrcpph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vrsqrtph-1a.c: Likewise. + * gcc.target/i386/avx512fp16vl-vsqrtph-1a.c: Likewise. + * gcc.target/i386/avx512vl-pr100267-1.c: Likewise. + * gcc.target/i386/avx512vl-vcmppd-1.c: Likewise. + * gcc.target/i386/avx512vl-vcmpps-1.c: Likewise. + * gcc.target/i386/avx512vl-vcvtpd2ps-1.c: Likewise. + * gcc.target/i386/avx512vl-vcvtpd2udq-1.c: Likewise. + * gcc.target/i386/avx512vl-vcvttpd2udq-1.c: Likewise. + * gcc.target/i386/avx512vl-vcvttps2udq-1.c: Likewise. + * gcc.target/i386/avx512vl-vextractf32x4-1.c: Likewise. + * gcc.target/i386/avx512vl-vmovapd-1.c: Likewise. + * gcc.target/i386/avx512vl-vmovaps-1.c: Likewise. + * gcc.target/i386/avx512vl-vmovdqa64-1.c: Likewise. + * gcc.target/i386/avx512vl-vpcmpd-1.c: Likewise. + * gcc.target/i386/avx512vl-vpcmpeqq-1.c: Likewise. + * gcc.target/i386/avx512vl-vpcmpequq-1.c: Likewise. + * gcc.target/i386/avx512vl-vpcmpq-1.c: Likewise. + * gcc.target/i386/avx512vl-vpcmpud-1.c: Likewise. + * gcc.target/i386/avx512vl-vpcmpuq-1.c: Likewise. + * gcc.target/i386/pr122343-1a.c: New test. + * gcc.target/i386/pr122343-1b.c: Likewise. + * gcc.target/i386/pr122343-2a.c: Likewise. + * gcc.target/i386/pr122343-2b.c: Likewise. + * gcc.target/i386/pr122343-3.c: Likewise. + * gcc.target/i386/pr122343-4a.c: Likewise. + * gcc.target/i386/pr122343-4b.c: Likewise. + * gcc.target/i386/pr122343-5a.c: Likewise. + * gcc.target/i386/pr122343-5b.c: Likewise. + * gcc.target/i386/pr122343-6a.c: Likewise. + * gcc.target/i386/pr122343-6b.c: Likewise. + * gcc.target/i386/pr122343-7.c: Likewise. + 2025-12-06 Alexandre Oliva <oliva@adacore.com> PR rtl-optimization/122947 diff --git a/gcc/testsuite/gcc.target/i386/avx2-vpcmpgtq-1.c b/gcc/testsuite/gcc.target/i386/avx2-vpcmpgtq-1.c index 7a98380..5e6f431 100644 --- a/gcc/testsuite/gcc.target/i386/avx2-vpcmpgtq-1.c +++ b/gcc/testsuite/gcc.target/i386/avx2-vpcmpgtq-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-mavx2 -O2" } */ +/* { dg-options "-mavx2 -O2 -fno-fuse-ops-with-volatile-access" } */ /* { dg-final { scan-assembler "vpcmpgtq\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */ #include <immintrin.h> diff --git a/gcc/testsuite/gnat.dg/reduce3.adb b/gcc/testsuite/gnat.dg/reduce3.adb new file mode 100644 index 0000000..55934d0 --- /dev/null +++ b/gcc/testsuite/gnat.dg/reduce3.adb @@ -0,0 +1,17 @@ +-- { dg-do run } +-- { dg-options "-gnat2022" } + +with Ada.Containers.Vectors; + +procedure Reduce3 is + + package Qs is new + Ada.Containers.Vectors (Index_Type => Positive, Element_Type => Positive); + + V : Qs.Vector; + Sum : Positive; + +begin + V.Append (1); + Sum := V'Reduce ("+", 0); +end; diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 816b5c4..816983c 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,13 @@ +2025-12-07 Jason Merrill <jason@redhat.com> + + * include/cpplib.h (cpp_get_path, cpp_get_dir): Remove. + (_cpp_get_file_path, _cpp_get_file_name, _cpp_get_file_stat) + (_cpp_get_file_dir): Move prototypes from... + * internal.h: ...here. + * files.cc (_cpp_get_file_path): Rename from... + (cpp_get_path): ...this. + (cpp_get_dir): Remove. + 2025-11-10 Jakub Jelinek <jakub@redhat.com> * directives.cc: Implement CWG3053. diff --git a/libcpp/files.cc b/libcpp/files.cc index d80c4bf..f8b3312 100644 --- a/libcpp/files.cc +++ b/libcpp/files.cc @@ -2335,6 +2335,16 @@ _cpp_get_file_name (_cpp_file *file) return file->name; } +/* Get the path associated with the _cpp_file F. The path includes + the base name from the include directive and the directory it was + found in via the search path. */ + +const char * +_cpp_get_file_path (_cpp_file *f) +{ + return f->path; +} + /* Inteface to file statistics record in _cpp_file structure. */ struct stat * _cpp_get_file_stat (_cpp_file *file) @@ -2574,24 +2584,6 @@ validate_pch (cpp_reader *pfile, _cpp_file *file, const char *pchname) return valid; } -/* Get the path associated with the _cpp_file F. The path includes - the base name from the include directive and the directory it was - found in via the search path. */ - -const char * -cpp_get_path (struct _cpp_file *f) -{ - return f->path; -} - -/* Get the directory associated with the _cpp_file F. */ - -cpp_dir * -cpp_get_dir (struct _cpp_file *f) -{ - return f->dir; -} - /* Get the cpp_buffer currently associated with the cpp_reader PFILE. */ diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 5190ff7..16f030c 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -1563,8 +1563,10 @@ extern void cpp_make_system_header (cpp_reader *, int, int); extern bool cpp_push_include (cpp_reader *, const char *); extern bool cpp_push_default_include (cpp_reader *, const char *); extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *); -extern const char *cpp_get_path (struct _cpp_file *); -extern cpp_dir *cpp_get_dir (struct _cpp_file *); +extern const char *_cpp_get_file_path (_cpp_file *); +extern const char *_cpp_get_file_name (_cpp_file *); +extern struct stat *_cpp_get_file_stat (_cpp_file *); +extern struct cpp_dir *_cpp_get_file_dir (_cpp_file *); extern cpp_buffer *cpp_get_buffer (cpp_reader *); extern struct _cpp_file *cpp_get_file (cpp_buffer *); extern cpp_buffer *cpp_get_prev (cpp_buffer *); diff --git a/libcpp/internal.h b/libcpp/internal.h index bcf5559..ae98524 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -788,9 +788,6 @@ extern void _cpp_pop_file_buffer (cpp_reader *, struct _cpp_file *, const unsigned char *); extern bool _cpp_save_file_entries (cpp_reader *pfile, FILE *f); extern bool _cpp_read_file_entries (cpp_reader *, FILE *); -extern const char *_cpp_get_file_name (_cpp_file *); -extern struct stat *_cpp_get_file_stat (_cpp_file *); -extern struct cpp_dir *_cpp_get_file_dir (_cpp_file *); extern bool _cpp_has_header (cpp_reader *, const char *, int, enum include_type); |
