[Bug c++/109247] New: [13 Regression] error: converting to ‘optional’ from initializer list would use explicit constructor ‘optional<_Tp>::optional(_Up) [with _Up = int; _

2023-03-22 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109247

Bug ID: 109247
   Summary: [13 Regression] error: converting to
‘optional’ from
initializer list would use explicit constructor
‘optional<_Tp>::optional(_Up) [with _Up = int; _Tp =
WebCore::SourceBrush::Brush]’ since
r13-6765-ga226590fefb35ed6
   Product: gcc
   Version: 13.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: marxin at gcc dot gnu.org
CC: mpolacek at gcc dot gnu.org
  Target Milestone: ---

The following is reduced from webkit2gtk3:gtk3 package:

$ cat webcore13.ii
template  struct optional {
  template  explicit optional(_Up);
  template  void operator=(_Up);
};
namespace WebCore {
int setPattern_pattern;
struct SourceBrush {
  struct Brush {
int brush;
  };
  void setPattern() { m_brush = {setPattern_pattern}; }
  optional m_brush;
};
} // namespace WebCore

$ clang++ webcore13.ii -c && g++-12 webcore13.ii -c
$ g++ webcore13.ii -c
webcore13.ii: In member function ‘void WebCore::SourceBrush::setPattern()’:
webcore13.ii:11:52: error: converting to
‘optional’ from initializer list would use
explicit constructor ‘optional<_Tp>::optional(_Up) [with _Up = int; _Tp =
WebCore::SourceBrush::Brush]’
   11 |   void setPattern() { m_brush = {setPattern_pattern}; }
  |^

[Bug c/109233] [12/13 Regression] warning: array subscript 5 is above array bounds of ‘struct tg3_napi[5]’ since r12-2591

2023-03-22 Thread ubizjak at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109233

Uroš Bizjak  changed:

   What|Removed |Added

  Attachment #54729|0   |1
is obsolete||
  Attachment #54731|0   |1
is obsolete||

--- Comment #6 from Uroš Bizjak  ---
Created attachment 54733
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54733=edit
Minimized testcase

Minimized testcase for the testsuite.

[Bug tree-optimization/109176] [13 Regression] internal compiler error: in to_constant, at poly-int.h:504

2023-03-22 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109176

Jakub Jelinek  changed:

   What|Removed |Added

  Attachment #54718|0   |1
is obsolete||
 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org

--- Comment #15 from Jakub Jelinek  ---
Created attachment 54732
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54732=edit
gcc13-pr109176.patch

Now as full untested patch.

[Bug tree-optimization/109176] [13 Regression] internal compiler error: in to_constant, at poly-int.h:504

2023-03-22 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109176

--- Comment #14 from Jakub Jelinek  ---
So, e.g. in the gcc.target/i386/sse4_1-pr88547-1.c testcase, we have before
veclower21:
v2di f13 (v2di x, v2di y)
{
  vector(2)  _1;
  v2di _4;

   [local count: 1073741824]:
  _1 = x_2(D) <= y_3(D);
  _4 = VEC_COND_EXPR <_1, { -1, -1 }, { 0, 0 }>;
  return _4;
}
And the problem is quite obvious.  We do have vcond_mask_v2div2di optab,
so with the changed code expand_vector_condition just returns true.
But, expand_vector_comparison has:
  /* As seen in PR95830, we should not expand comparisons that are only
 feeding a VEC_COND_EXPR statement.  */
  auto_vec uses;
  FOR_EACH_IMM_USE_FAST (use_p, iterator, lhs)
{
  gimple *use = USE_STMT (use_p);
  if (is_gimple_debug (use))
continue;
  if (is_gimple_assign (use)
  && gimple_assign_rhs_code (use) == VEC_COND_EXPR
  && gimple_assign_rhs1 (use) == lhs
  && gimple_assign_rhs2 (use) != lhs
  && gimple_assign_rhs3 (use) != lhs)
uses.safe_push (use);
  else
vec_cond_expr_only = false;
}

  if (vec_cond_expr_only)
for (gimple *use : uses)
  {
gimple_stmt_iterator it = gsi_for_stmt (use);
if (!expand_vector_condition (, dce_ssa_names))
  {
vec_cond_expr_only = false;
break;
  }
  }

  if (!uses.is_empty () && vec_cond_expr_only)
return NULL_TREE;
So, it effectively relies on expand_vector_condition doing its previous job
when the def stmt of a is a comparison, as nothing else checks it in that case,
and here x86 doesn't have V2DImode comparison instruction for this case.

Thus, I think we should instead of the tree-vect-generic.cc changes do:
--- gcc/tree-vect-generic.cc.jj 2023-03-21 13:28:21.354671095 +0100
+++ gcc/tree-vect-generic.cc2023-03-22 12:53:27.853986127 +0100
@@ -1063,6 +1063,15 @@ expand_vector_condition (gimple_stmt_ite
   return true;
 }

+  /* If a has vector boolean type and is a comparison, above
+ expand_vec_cond_expr_p might fail, even if both the comparison and
+ VEC_COND_EXPR could be supported individually.  See PR109176.  */
+  if (a_is_comparison
+  && VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (a))
+  && expand_vec_cond_expr_p (type, TREE_TYPE (a), SSA_NAME)
+  && expand_vec_cmp_expr_p (TREE_TYPE (a1), TREE_TYPE (a), code))
+return true;
+
   /* Handle vector boolean types with bitmasks.  If there is a comparison
  and we can expand the comparison into the vector boolean bitmask,
  or otherwise if it is compatible with type, we can transform

i.e. always look at the comparison and always try to handle it together, and if
that
fails, try to handle this special case by handling both stmts individually, and
only
if not do the piecewise etc. lowering.
At least, with the above patch, all FAILs I got in the x86_64-linux bootstrap
got fixed
(tested just those for now and nothing else).

[Bug ada/109212] Ada "for" expression generates gcc error

2023-03-22 Thread ebotcazou at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109212

--- Comment #4 from Eric Botcazou  ---
> Thanks for the quick check. Do I need to do anything on this bug report to
> close it?

No, it has already been closed.

[Bug middle-end/109246] New: Missed optimization for 2-dimensional array with equal values accessed through Enums

2023-03-22 Thread andre.schackier at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109246

Bug ID: 109246
   Summary: Missed optimization for 2-dimensional array with equal
values accessed through Enums
   Product: gcc
   Version: 12.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: andre.schackier at gmail dot com
  Target Milestone: ---

Given the following code:

enum class E {
A = 0,
B = 1,
};

constexpr int t[2][2]{{1, 1}, {1, 1}};

int f1(E a) { return t[static_cast(a)][static_cast(a)]; }

int f2(E a, E b) { return t[static_cast(a)][static_cast(b)]; }

and compiling with '-O3 -fstrict-enums' gives:
- https://godbolt.org/z/s8jssnqq5

f1(E):
movsx   rdi, edi
lea rax, [rdi+rdi*2]
mov eax, DWORD PTR t[0+rax*4]
ret
f2(E, E):
movsx   rsi, esi
movsx   rdi, edi
lea rax, [rsi+rdi*2]
mov eax, DWORD PTR t[0+rax*4]
ret
t:
.long   1
.long   1
.long   1
.long   1

gcc should be able to determine that in all cases both 'f1' and 'f2' can only
ever return 1.

The same is happening for
3x3 - https://godbolt.org/z/7v7hfq357
4x4 - https://godbolt.org/z/fTejK8YKb
5x5 - https://godbolt.org/z/31GcKPG6c
arrays.

Also explicitly telling the compiler about the valid values for 'a' and 'b'
using '__builtin_unreachable()' like this:

enum class E {
A = 0,
B = 1,
};

constexpr int t[2][2]{{1, 1}, {1, 1}};

int f1(E a) {
if (a != E::A && a != E::B) {
__builtin_unreachable();
}

return t[static_cast(a)][static_cast(a)];
}

int f2(E a, E b) {
if (a != E::A && a != E::B) {
__builtin_unreachable();
}
if (b != E::A && b != E::B) {
__builtin_unreachable();
}

return t[static_cast(a)][static_cast(b)];
}

does not help - https://godbolt.org/z/6x7xKo1xj

[Bug c/109233] [12/13 Regression] warning: array subscript 5 is above array bounds of ‘struct tg3_napi[5]’ since r12-2591

2023-03-22 Thread ubizjak at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109233

--- Comment #5 from Uroš Bizjak  ---
Created attachment 54731
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54731=edit
Even more minimized testcase.

[Bug c/109233] [12/13 Regression] warning: array subscript 5 is above array bounds of ‘struct tg3_napi[5]’ since r12-2591

2023-03-22 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109233

Jakub Jelinek  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Target Milestone|--- |12.3
   Last reconfirmed||2023-03-22
 Status|UNCONFIRMED |NEW
Summary|warning: array subscript 5  |[12/13 Regression] warning:
   |is above array bounds of|array subscript 5 is above
   |‘struct tg3_napi[5]’ since  |array bounds of ‘struct
   |r12-2591|tg3_napi[5]’ since r12-2591
   Priority|P3  |P2

[Bug c/109233] warning: array subscript 5 is above array bounds of ‘struct tg3_napi[5]’ since r12-2591

2023-03-22 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109233

Jakub Jelinek  changed:

   What|Removed |Added

Summary|warning: array subscript 5  |warning: array subscript 5
   |is above array bounds of|is above array bounds of
   |‘struct tg3_napi[5]’|‘struct tg3_napi[5]’ since
   ||r12-2591
 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek  ---
Both the original and minimized testcase started to warn with
r12-2591-g2e96b5f14e4025691b57d2301d71a

[Bug driver/108865] gcc on Windows fails with Unicode path to source file

2023-03-22 Thread costas.argyris at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108865

--- Comment #23 from Costas Argyris  ---
Created attachment 54730
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54730=edit
Make symbol optional

Could you please try this patch?

[Bug tree-optimization/109154] [13 regression] jump threading de-optimizes nested floating point comparisons

2023-03-22 Thread avieira at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109154

--- Comment #5 from avieira at gcc dot gnu.org ---
Im slightly confused here, on entry to BB 5 we know the opposite of _1 < 0.0
no? if we branch to BB 5 we know !(_1 < 0.0) so we can't fold _1 <= 1.0, we
just know that the range of _1 is >= 0.0 . Or am I misreading, I've not tried
compiling myself just going off the code both of you posted here.

[Bug c/109233] warning: array subscript 5 is above array bounds of ‘struct tg3_napi[5]’

2023-03-22 Thread ubizjak at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109233

--- Comment #3 from Uroš Bizjak  ---
Created attachment 54729
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54729=edit
Minimized testcase

WIP, but *substantially* minimized.

gcc -O2 -Warray-bounds:

tg3-6.c: In function ‘tg3_init_one’:
tg3-6.c:51:37: warning: array subscript 5 is above array bounds of ‘struct
tg3_napi[5]’ [-Warray-bounds=]
   51 |   struct tg3_napi *tnapi = >napi[i];
  | ^~~
tg3-6.c:22:19: note: while referencing ‘napi’
   22 |   struct tg3_napi napi[(4 + 1)];
  |   ^~~~
tg3-6.c:51:37: warning: array subscript 5 is above array bounds of ‘struct
tg3_napi[5]’ [-Warray-bounds=]
   51 |   struct tg3_napi *tnapi = >napi[i];
  | ^~~
tg3-6.c:22:19: note: while referencing ‘napi’
   22 |   struct tg3_napi napi[(4 + 1)];
  |   ^~~~

[Bug libgcc/109245] aarch64 gcc defaults to -moutline-atomics but symbol ‘__aarch64_swp4_sync’ is hidden in libgcc.a

2023-03-22 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109245

Andrew Pinski  changed:

   What|Removed |Added

   Last reconfirmed||2023-03-22
 Status|UNCONFIRMED |WAITING
 Ever confirmed|0   |1

[Bug tree-optimization/109154] [13 regression] jump threading de-optimizes nested floating point comparisons

2023-03-22 Thread aldyh at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109154

Aldy Hernandez  changed:

   What|Removed |Added

 CC||amacleod at redhat dot com,
   ||law at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org

--- Comment #4 from Aldy Hernandez  ---
(In reply to Tamar Christina from comment #3)
> Aldy, any thoughts here?

We need a "real" threading expert on this one, as the decision by ranger is
correct.  It looks like this is a profitability issue in the threader.

The problem can be seen with -O2 --param=threader-debug=all, on the threadfull1
dump:

The threaded path is:
path: 4->5->7 SUCCESS

ranger can fold the conditional in BB5:

if (_1 < 1.0e+0)
  goto ; [41.00%]
else
  goto ; [59.00%]

...because on entry to BB5 we know _1 < 0.0:

   [local count: 955630225]:
  _1 = (float) l_9;
  _2 = _1 < 0.0;
  zone1_15 = (int) _2;
  if (_1 < 0.0)
goto ; [41.00%]
  else
goto ; [59.00%]

   [local count: 391808389]:

   [local count: 955630225]:
  # iftmp.0_10 = PHI 
  fasten_main_natpro_chrg_init.2_3 = fasten_main_natpro_chrg_init;
  _4 = fasten_main_natpro_chrg_init.2_3 * iftmp.0_10;
  _5 = (float) _4;
  if (_1 < 1.0e+0)
goto ; [41.00%]
  else
goto ; [59.00%]

If this shouldn't be threaded because of a hot/cold issue, perhaps the code
goes in back_threader_profitability::profitable_path_p() where there's already
logic wrt hot blocks.

[Bug driver/108865] gcc on Windows fails with Unicode path to source file

2023-03-22 Thread lh_mouse at 126 dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108865

LIU Hao  changed:

   What|Removed |Added

 CC||lh_mouse at 126 dot com

--- Comment #22 from LIU Hao  ---
This causes x86_64-w64-mingw32 to fail:


```
C:/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/13.0.1/../../../../x86_64-w64-mingw32/bin/ld.exe:
required symbol `HOST_EXTRA_OBJS_SYMBOL' not defined
collect2.exe: error: ld returned 1 exit status
```

[Bug debug/109237] csmith: another timeout with -g -O3 this time since r12-156-g8d4c374c4419a875

2023-03-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109237

--- Comment #10 from Richard Biener  ---
There's similar issues with GIMPLE uses of last_stmt () which generally (but
not always) want to look at a possible control transfer stmt.  It looks like
we're
not guaranteed to have no debug stmts after such, in particular CFG cleanup
seems to be ready to remove debug stmts after a noreturn call.  But
GIMPLE verify_flow_info should already choke on that, so it might be only a
temporary thing to accept?

[Bug libgcc/109245] aarch64 gcc defaults to -moutline-atomics but symbol ‘__aarch64_swp4_sync’ is hidden in libgcc.a

2023-03-22 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109245

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
That means one or more of your shared libraries has been linked incorrectly,
e.g. by using ld -shared by hand instead of gcc -shared, or with -nostdlib or
something similar.

[Bug libgcc/109245] New: aarch64 gcc defaults to -moutline-atomics but symbol ‘__aarch64_swp4_sync’ is hidden in libgcc.a

2023-03-22 Thread songmz1999 at foxmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109245

Bug ID: 109245
   Summary: aarch64 gcc defaults to -moutline-atomics but symbol
‘__aarch64_swp4_sync’ is hidden in libgcc.a
   Product: gcc
   Version: 12.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgcc
  Assignee: unassigned at gcc dot gnu.org
  Reporter: songmz1999 at foxmail dot com
  Target Milestone: ---

I found an issue when compiling the connection process using the toolchain
aarch64_gcc12.2.0_glibc2.31.0_fp with the error message:

~/aarch64_gcc12.2.0_glibc2.31.0_fp/aarch64-unknown-linux-gnueabi/bin/.ld:
../../../deploy/oms/bin/omsservice: hidden symbol `__aarch64_swp4_sync' in
~/aarch64_gcc12.2.0_glibc2.31.0_fp/bin/../lib/gcc/aarch64-unknown-linux-gnueabi/12.2.0/libgcc.a(swp_4_5.o)
is referenced by DSO

~/aarch64_gcc12.2.0_glibc2.31.0_fp/aarch64-unknown-linux-gnueabi/bin/.ld: final
link failed: bad value


The solution I've found so far is to enable the -mno-outline-atomics parameter
at compile time. But why does gcc have -moutline-atomics enabled by default,
but when calling the function '__aarch64_swp4_sync', it is hidden in libgcc.a?
Is there a better solution?

[Bug tree-optimization/109240] Missed fneg/fsub optimization

2023-03-22 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109240

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2023-03-22
 Ever confirmed|0   |1
   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
Created attachment 54728
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54728=edit
gcc13-pr109240.patch

Actually, I think using manual operand_equal_p isn't that bad.

[Bug debug/109237] csmith: another timeout with -g -O3 this time since r12-156-g8d4c374c4419a875

2023-03-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109237

--- Comment #9 from Richard Biener  ---
Samples: 289K of event 'cycles:u', Event count (approx.): 384226334976  
Overhead   Samples  Command  Shared Object Symbol   
   3.52%  9747  cc1  cc1   [.] bb_is_just_return   
   #
   2.94%  8241  cc1  cc1   [.] df_note_compute 
   #
   2.92%  8085  cc1  cc1   [.] init_alias_analysis 
   #
   2.55%  7035  cc1  cc1   [.]
delete_trivially_dead_insns #
   2.28%  6372  cc1  cc1   [.]
contains_no_active_insn_p   #
   2.16%  6288  cc1  cc1   [.] get_ref_base_and_extent 
   #
   2.02%  5785  cc1  cc1   [.] ggc_set_mark
   #
   1.55%  4308  cc1  cc1   [.] fast_dce
   #

I see that bb_is_just_return is high in the profile and looking at its
implementation I wonder whether on RTL we can scan insns backwards and
stop if the last (real?) insn isn't ANY_RETURN_P ()?  Using
FOR_BB_INSNS_REVERSE puts it off the profile completely.  Will test a patch.

Similar contains_no_active_insn_p is high up in the profile and it looks
like micro-optimizing it a bit would help.  Using NONDEBUG_INSN_P to
guard the flow_active_insn_p call doesn't seem to help (but perf is always
noisy).

[Bug tree-optimization/109008] [13 Regression] Wrong code in scipy package since r13-3926-gd4c2f1d376da6f

2023-03-22 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109008

--- Comment #50 from CVS Commits  ---
The master branch has been updated by Aldy Hernandez :

https://gcc.gnu.org/g:81295d445ec569c6413fd6f7921e27420167f8fa

commit r13-6797-g81295d445ec569c6413fd6f7921e27420167f8fa
Author: Aldy Hernandez 
Date:   Wed Mar 8 10:58:01 2023 +0100

frange: Implement nan_state class [PR109008]

This patch implements a nan_state class, that allows us to query or
pass around the NANness of an frange.  We can store +NAN, -NAN, +-NAN,
or not-a-NAN with it.

I tried to touch as little as possible, leaving other cleanups to the
next release.  For example, we should replace the m_*_nan fields in
frange with nan_state, and provide relevant accessors to nan_state
(isnan, etc).

PR tree-optimization/109008

gcc/ChangeLog:

* value-range.cc (frange::set): Add nan_state argument.
* value-range.h (class nan_state): New.
(frange::get_nan_state): New.

[Bug debug/109237] csmith: another timeout with -g -O3 this time since r12-156-g8d4c374c4419a875

2023-03-22 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109237

Martin Liška  changed:

   What|Removed |Added

Summary|csmith: another timeout |csmith: another timeout
   |with -g -O3 this time   |with -g -O3 this time since
   ||r12-156-g8d4c374c4419a875
   Keywords|needs-bisection |
 CC||marxin at gcc dot gnu.org

--- Comment #8 from Martin Liška  ---
I think it started with r12-156-g8d4c374c4419a875.

[Bug tree-optimization/109176] [13 Regression] internal compiler error: in to_constant, at poly-int.h:504

2023-03-22 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109176

--- Comment #13 from Jakub Jelinek  ---
Unfortunately the patch breaks quite a lot of tests on x86_64:
+FAIL: c-c++-common/goacc/firstprivate-mappings-1.c (internal compiler error:
in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: gcc.target/i386/sse2-pr88547-1.c (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:281)
+FAIL: gcc.target/i386/sse2-pr88547-2.c (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:281)
+FAIL: gcc.target/i386/sse4_1-pr88547-1.c (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:281)
+FAIL: gcc.target/i386/sse4_1-pr88547-2.c (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:281)
+FAIL: gdc.dg/torture/simd_blendvector.d   -O0  (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:281)
+FAIL: gdc.dg/torture/simd_blendvector.d   -O0 -g  (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:281)
+FAIL: g++.dg/tree-ssa/pr88152-1.C   (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:281)
+FAIL: c-c++-common/goacc/firstprivate-mappings-1.c  -std=c++11 (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: c-c++-common/goacc/firstprivate-mappings-1.c  -std=c++14 (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: c-c++-common/goacc/firstprivate-mappings-1.c  -std=c++17 (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: c-c++-common/goacc/firstprivate-mappings-1.c  -std=c++20 (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: c-c++-common/goacc/firstprivate-mappings-1.c  -std=c++2b (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: c-c++-common/goacc/firstprivate-mappings-1.c  -std=c++98 (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: g++.dg/goacc/firstprivate-mappings-1.C  -std=c++11 (internal compiler
error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: g++.dg/goacc/firstprivate-mappings-1.C  -std=c++14 (internal compiler
error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: g++.dg/goacc/firstprivate-mappings-1.C  -std=c++17 (internal compiler
error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: g++.dg/goacc/firstprivate-mappings-1.C  -std=c++20 (internal compiler
error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: g++.dg/goacc/firstprivate-mappings-1.C  -std=c++2b (internal compiler
error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: g++.dg/goacc/firstprivate-mappings-1.C  -std=c++98 (internal compiler
error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: libgomp.oacc-c/../libgomp.oacc-c-c++-common/firstprivate-mappings-1.c
-DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O2  (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: libgomp.oacc-c++/../libgomp.oacc-c-c++-common/firstprivate-mappings-1.c
-DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O2  (internal
compiler error: in gimple_expand_vec_cond_expr, at gimple-isel.cc:249)
+FAIL: libgomp.oacc-c++/firstprivate-mappings-1.C -DACC_DEVICE_TYPE_host=1
-DACC_MEM_SHARED=1 -foffload=disable  -O2  (internal compiler error: in
gimple_expand_vec_cond_expr, at gimple-isel.cc:249)

[Bug debug/109237] csmith: another timeout with -g -O3 this time

2023-03-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109237

--- Comment #7 from Richard Biener  ---
Created attachment 54727
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54727=edit
patch for delete_trivially_dead_insns

The attached improves that to

 trivially dead code:   2.16 (  3%)

I've verified the set of debug insns kept is the same as before.

[Bug target/109244] internal compiler error: in setup_preferred_alternate_classes_for_new_pseudos, at ira.cc:2892

2023-03-22 Thread juzhe.zhong at rivai dot ai via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109244

--- Comment #3 from JuzheZhong  ---
(In reply to Mathieu Malaterre from comment #2)
> Thanks for the quick update. I'll stop my test until this is merged.
> 
> As a side note, I am also seeing this one in my log:
> 
> internal compiler error: in finalize_new_accesses, at rtl-ssa/changes.cc:471
>   133 |   }
>   |   ^
> 0xf6b49f rtl_ssa::function_info::finalize_new_accesses(rtl_ssa::insn_change&)
> ../../src/gcc/rtl-ssa/changes.cc:471
> 0xf656cd
> rtl_ssa::function_info::change_insns(array_slice)
> ../../src/gcc/rtl-ssa/changes.cc:659
> 0xf6551f rtl_ssa::function_info::change_insn(rtl_ssa::insn_change&)
> ../../src/gcc/rtl-ssa/changes.cc:717
> 0x57eeb1 change_insn
> ../../src/gcc/config/riscv/riscv-vsetvl.cc:1027
> 0x57eeb1 pass_vsetvl::cleanup_insns() const
> ../../src/gcc/config/riscv/riscv-vsetvl.cc:3929
> 0x59070b pass_vsetvl::lazy_vsetvl()
> ../../src/gcc/config/riscv/riscv-vsetvl.cc:4189
> 0x590891 pass_vsetvl::execute(function*)
> ../../src/gcc/config/riscv/riscv-vsetvl.cc:4219


Is this ICE also comes from compiling the codes that you attach in this PR?
If yes, I am pretty sure this issue has been fixed since I compile the
attachment you gave with no fails now.

Let's wait for kito to merge all the bug fix patches (there are about 5 bug fix
patches pending in the GCC mail list)

Thanks.

[Bug debug/109237] csmith: another timeout with -g -O3 this time

2023-03-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109237

--- Comment #6 from Richard Biener  ---
For delete_trivially_dead_insns we have

  for (insn = get_last_insn (); insn; insn = prev)
{
  int live_insn = 0;

  prev = PREV_INSN (insn);
  if (!INSN_P (insn))
continue;

  live_insn = insn_live_p (insn, counts);

  /* If this is a dead insn, delete it and show registers in it aren't
 being used.  */

  if (! live_insn && dbg_cnt (delete_trivial_dead))
{
  if (DEBUG_INSN_P (insn))
...

but insn_live_p has "interesting" behavior for debug_insns:

  else if (DEBUG_INSN_P (insn))
{
  rtx_insn *next;

  if (DEBUG_MARKER_INSN_P (insn))
return true;

  for (next = NEXT_INSN (insn); next; next = NEXT_INSN (next))
if (NOTE_P (next))
  continue;
else if (!DEBUG_INSN_P (next))
  return true;
/* If we find an inspection point, such as a debug begin stmt,
   we want to keep the earlier debug insn.  */
else if (DEBUG_MARKER_INSN_P (next))
  return true;
else if (INSN_VAR_LOCATION_DECL (insn) == INSN_VAR_LOCATION_DECL
(next))
  return false;

  return true;

that's ending up doing quadratic work that would have been better done
by keeping track of some state during the backwards walk of the insn
stream.

[Bug target/109244] internal compiler error: in setup_preferred_alternate_classes_for_new_pseudos, at ira.cc:2892

2023-03-22 Thread malat at debian dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109244

--- Comment #2 from Mathieu Malaterre  ---
Thanks for the quick update. I'll stop my test until this is merged.

As a side note, I am also seeing this one in my log:

internal compiler error: in finalize_new_accesses, at rtl-ssa/changes.cc:471
  133 |   }
  |   ^
0xf6b49f rtl_ssa::function_info::finalize_new_accesses(rtl_ssa::insn_change&)
../../src/gcc/rtl-ssa/changes.cc:471
0xf656cd
rtl_ssa::function_info::change_insns(array_slice)
../../src/gcc/rtl-ssa/changes.cc:659
0xf6551f rtl_ssa::function_info::change_insn(rtl_ssa::insn_change&)
../../src/gcc/rtl-ssa/changes.cc:717
0x57eeb1 change_insn
../../src/gcc/config/riscv/riscv-vsetvl.cc:1027
0x57eeb1 pass_vsetvl::cleanup_insns() const
../../src/gcc/config/riscv/riscv-vsetvl.cc:3929
0x59070b pass_vsetvl::lazy_vsetvl()
../../src/gcc/config/riscv/riscv-vsetvl.cc:4189
0x590891 pass_vsetvl::execute(function*)
../../src/gcc/config/riscv/riscv-vsetvl.cc:4219

[Bug tree-optimization/109240] Missed fneg/fsub optimization

2023-03-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109240

Richard Biener  changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org

--- Comment #1 from Richard Biener  ---
You can try if match.pd is "preprocessed enough" to make use of macros.

vec_perm:c cannot be done, "selective" :c on a for iterator is also not
possible.  If you have an idea for a syntax to express the "iteration"
please share it.

[Bug target/109244] internal compiler error: in setup_preferred_alternate_classes_for_new_pseudos, at ira.cc:2892

2023-03-22 Thread juzhe.zhong at rivai dot ai via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109244

--- Comment #1 from JuzheZhong  ---
Hi, thank you for reporting it.
After several tries. I am pretty sure this issue has been fixed by
this patch:
https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614393.html

I have several bug fix patches pending in the GCC mail list.
Let's me ping @Kito to merge patches.

Thank you so much.

[Bug tree-optimization/109238] [13 Regression] tst-realloc.i:42:19: error: pointer ‘p’ may be used after ‘realloc’ [-Werror=use-after-free] in glibc tests

2023-03-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109238

Richard Biener  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Status|NEW |ASSIGNED

--- Comment #2 from Richard Biener  ---
I will have a look.

[Bug debug/109237] csmith: another timeout with -g -O3 this time

2023-03-22 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109237

Richard Biener  changed:

   What|Removed |Added

   Last reconfirmed||2023-03-22
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
 CC||rguenth at gcc dot gnu.org

--- Comment #5 from Richard Biener  ---
Confirmed.  Maybe the only suspicious thing is

 trivially dead code:  10.65 ( 13%)

and

 tree CFG cleanup   :   5.06 (  6%)
 cfg cleanup:   5.41 (  7%)

But yes, we're likely facing a lot of debug stmts, csmith tends to leave around
tons of dead code.

[Bug c/80528] reimplement gnulib's "useless-if-before-free" script as a compiler warning

2023-03-22 Thread egallager at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80528

Eric Gallager  changed:

   What|Removed |Added

 CC||rep.dot.nop at gmail dot com

--- Comment #6 from Eric Gallager  ---
Recent patchset for fixing problems in GCC based on this same principle:
https://gcc.gnu.org/pipermail/gcc-patches/2023-March/613116.html

[Bug c++/109244] New: internal compiler error: in setup_preferred_alternate_classes_for_new_pseudos, at ira.cc:2892

2023-03-22 Thread malat at debian dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109244

Bug ID: 109244
   Summary: internal compiler error: in
setup_preferred_alternate_classes_for_new_pseudos, at
ira.cc:2892
   Product: gcc
   Version: 13.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: malat at debian dot org
  Target Milestone: ---

Created attachment 54726
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54726=edit
Preprocessed source

I cannot compile highway project on riscv64/Debian. It fails with:

hwy/contrib/sort/vqsort-inl.h:1386:1: internal compiler error: in
setup_preferred_alternate_classes_for_new_pseudos, at ira.cc:2892

Compilation line:

/usr/lib/gcc-snapshot/bin/g++ -freport-bug -DHWY_SHARED_DEFINE
-Dhwy_contrib_EXPORTS -I/home/mathieu/debian/highway -g -O2
-ffile-prefix-map=/home/mathieu/debian/highway=. -fstack-protector-strong
-Wformat -Werror=format-security -DHWY_BROKEN_EMU128=0 -Wdate-time
-D_FORTIFY_SOURCE=2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden
-Wno-builtin-macro-redefined -D__DATE__=\"redacted\"
-D__TIMESTAMP__=\"redacted\" -D__TIME__=\"redacted\" -fmerge-all-constants
-Wall -Wextra -Wconversion -Wsign-conversion -Wvla -Wnon-virtual-dtor
-fmath-errno -fno-exceptions -march=rv64gcv1p0 -Werror -MD -MT
CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_f32d.cc.o -MF
CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_f32d.cc.o.d -o
CMakeFiles/hwy_contrib.dir/hwy/contrib/sort/vqsort_f32d.cc.o -c
/home/mathieu/debian/highway/hwy/contrib/sort/vqsort_f32d.cc

[Bug d/109231] [13 regression] Comparison failure in libphobos/libdruntime/rt/util/typeinfo.o

2023-03-22 Thread ro at CeBiTec dot Uni-Bielefeld.DE via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109231

--- Comment #9 from ro at CeBiTec dot Uni-Bielefeld.DE  ---
> --- Comment #8 from ro at CeBiTec dot Uni-Bielefeld.DE  Uni-Bielefeld.DE> ---
>> --- Comment #7 from Jakub Jelinek  ---
>> No luck reproducing this using a cross.
>
> Ok, so I'll continue with the reghunt.

It's finished now and identified your patch

commit 24c06560a7fa39049911eeb8777325d112e0deb9
Author: Jakub Jelinek 
Date:   Fri Mar 17 18:59:56 2023 +0100

tree-inline: Fix up multiversioning with vector arguments [PR105554]

as the culprit.

[Bug target/106543] [10/11/12 Regression] *sge_ uses operand 2 but there is no operand 2

2023-03-22 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106543

Andrew Pinski  changed:

   What|Removed |Added

   Last reconfirmed||2023-03-22
  Known to work||7.1.0
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
Summary|*sge_  |[10/11/12 Regression]
   |uses operand 2 but there is |*sge_
   |no operand 2|uses operand 2 but there is
   ||no operand 2
  Known to fail||8.1.0
   Target Milestone|--- |10.5

--- Comment #1 from Andrew Pinski  ---
It broke with r8-4335-g0791ac186bdddf so it is a regression as riscv was added
in GCC 7 and was correct then.

<    1   2