[Bug target/115949] [SH] unrecognized insn in postreload

2024-07-21 Thread olegendo at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115949

--- Comment #4 from Oleg Endo  ---
The issue seems to be that the 'movsi_ie' pattern allows 'mem(reg+disp) <->
fp-reg' load/stores through the predicates 'general_movdst_operand' and
'general_movsrc_operand' but then disallows it via the constraints.

I guess once the whole thing arrives at this impossible operand combination, it
has cornered itself -- it would require another register to compute the 'stack
(r15) + offset' address, which it doesn't have.

Perhaps it would be better to split out the FP-regs related things from the
movsi_ie pattern.

Another questionable point is why RA decides to use an FP reg for an SImode
variable.  The resulting code will be probably just terrible.

[Bug fortran/59104] 15 Regression - Wrong result with SIZE specification expression

2024-07-21 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59104

--- Comment #17 from anlauf at gcc dot gnu.org ---
(In reply to Paul Thomas from comment #16)
> Created attachment 58717 [details]
> Fix for the regression
> 
> The mechanism in the original fix was OK but the use of the locus location
> was not. I will investigate why this is the case but the attached works and
> is very close to the first thing that I tried for the PR!
> 
> It regtests fine. I will dejagnu-ify the testcase and will commit to
> mainline in 24 hours, if I don't hear objections.

I've just tested that fix and it works here.
Fixes also the full module where I extracted the reproducer from.

OK from my side.

Thanks, Paul!

[Bug target/58416] Incorrect x87-based union copying code

2024-07-21 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58416

Richard Biener  changed:

   What|Removed |Added

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

--- Comment #12 from Richard Biener  ---
I have two variants of a fix, one that for the testcase in comment#5 avoids
scalarization on i?86-*-* and one that scalarizes into unsigned:96 which
exposes that we fail to constant fold MEM[""];

On x86-64 with sizeof(long double) == 16 (instead of == 12 with -m32) we
scalarize with uint128_t.

I'm going to test the variant that avoids creating an unsigned:96 integer type
since I think that's safer.

[Bug target/58416] Incorrect x87-based union copying code

2024-07-21 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58416

--- Comment #13 from Richard Biener  ---
Created attachment 58718
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58718&action=edit
patch I am testing

Paul - can you test if this patch resolves the emacs issue?

[Bug tree-optimization/93271] [12/13/14/15 regression] SRA producing wrong code on denormals

2024-07-21 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93271

Richard Biener  changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org

--- Comment #19 from Richard Biener  ---
My patch for PR58416 doesn't fix this because here the issue is we are creating
a load/store "no-op" move based on accesses that are never executed at runtime
since we're doing the re-materialization at places not related to the
scalar accesses.

I'll note this also causes UB by accessing a.b after a store to a.a (GCC
allows this as an extension).

If SRA would know we need to re-materialize an object at the time we do
analyze_access_subtree we could fix-up similar to PR58416, but I think
we don't know this.

So instead SRA should chose more optimal placement for the re-materializing
loads and stores using LCM.  Note to be fully correct (never access when
it wasn't accessed in the untransformed code) it might need to emit multiple
copies for this.

We end up with

Access trees for a (UID: 2999):
access { base = (2999)'a', offset = 0, size = 32, expr = a.b, type = float,
reverse = 0, grp_read = 1, grp_write = 1, grp_assignment_read = 1,
grp_assignment_write = 1, grp_scalar_read = 1, grp_scalar_write = 1,
grp_total_scalarization = 0, grp_hint = 0, grp_covered = 1,
grp_unscalarizable_region = 0, grp_unscalarized_data = 0, grp_same_access_path
= 1, grp_partial_lhs = 0, grp_to_be_replaced = 1, grp_to_be_debug_replaced = 0}

while there's grp_assignment_read/write there's not the opposite
(grp_call_read/write), a flag to note we need re-materialization
after a store or before a read.

Note without a target hook telling whether we have a "true" FP load/store
instruction not SRAing in this case might pessimize quite some code(?)

[Bug target/116021] New: Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread egallager at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

Bug ID: 116021
   Summary: Ada build on Darwin: gen_il-main: Symbol not found:
___builtin_nested_func_ptr_created
   Product: gcc
   Version: 15.0
Status: UNCONFIRMED
  Keywords: build
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: egallager at gcc dot gnu.org
CC: iains at gcc dot gnu.org
  Target Milestone: ---

I was trying to figure this out with Iain on IRC the other day, but we never
managed to solve it, so I'm putting it here so it doesn't get lost:
Lately (as of r15-1899-g2b3027bea3f218) when I've been trying to build GCC with
Ada, I've been getting errors like the following:

mkdir -p ada/gen_il
cd ada/gen_il; gnatmake -q -g -gnata -gnat2012 -gnatw.g -gnatyg -gnatU
-I/Users/ericgallager/gcc_newgit/gcc/ada gen_il-main
# Ignore errors to work around finalization issues in older compilers
cd ada/gen_il; ./gen_il-main
dyld: lazy symbol binding failed: Symbol not found:
___builtin_nested_func_ptr_created
  Referenced from:
/Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/gcc/ada/gen_il/./gen_il-main
  Expected in:
/Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/./prev-gcc/libgcc_s.1.1.dylib

dyld: Symbol not found: ___builtin_nested_func_ptr_created
  Referenced from:
/Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/gcc/ada/gen_il/./gen_il-main
  Expected in:
/Users/ericgallager/gcc_newgit/abcdefghijklmnopqrstuvwxyz_01234567890.build/./prev-gcc/libgcc_s.1.1.dylib


raised PROGRAM_ERROR : unhandled signal
make[3]: [ada/stamp-gen_il] Error 1 (ignored)
/Users/ericgallager/gcc_newgit/gcc/../move-if-change
ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads
mv: rename ada/gen_il/seinfo_tables.ads to ada/seinfo_tables.ads: No such file
or directory
make[3]: *** [ada/stamp-gen_il] Error 1
make[2]: *** [all-stage2-gcc] Error 2
make[1]: *** [stage2-bubble] Error 2
make: *** [all] Error 2

Apparently __builtin_nested_func_ptr_created has been renamed to
__gcc_nested_func_ptr_created in recent revisions, so I don't get why the build
process is still looking for the old name? Here's what shows up when I search
the repo for the common part shared between those strings:

$ git grep _nested_func_ptr_created
gcc/ChangeLog:rename the library fallbacks to
__gcc_nested_func_ptr_created and
gcc/ChangeLog:* doc/invoke.texi: Rename these to
__gcc_nested_func_ptr_created
gcc/builtins.def:DEF_EXT_LIB_BUILTIN (BUILT_IN_GCC_NESTED_PTR_CREATED,
"__gcc_nested_func_ptr_created", BT_FN_VOID_PTR_PTR_PTR, ATTR_NOTHROW_LIST)
gcc/config/darwin.h:  -U ___gcc_nested_func_ptr_created \
gcc/config/darwin.h:  -exported_symbol ___gcc_nested_func_ptr_created \
gcc/doc/invoke.texi:@code{__gcc_nested_func_ptr_created} and
gcc/tree.cc:  local_define_builtin
("__builtin___gcc_nested_func_ptr_created", ftype,
gcc/tree.cc:"__gcc_nested_func_ptr_created",
ECF_NOTHROW);
libgcc/ChangeLog:(__gcc_nested_func_ptr_created): Implement a basic
trampoline
libgcc/ChangeLog:* libgcc2.h (__gcc_nested_func_ptr_created): Change
type of last
libgcc/ChangeLog:* config/i386/heap-trampoline.c
(__gcc_nested_func_ptr_created):
libgcc/ChangeLog:* config/aarch64/heap-trampoline.c
(__gcc_nested_func_ptr_created):
libgcc/ChangeLog:(__gcc_nested_func_ptr_created): Likewise.
libgcc/ChangeLog:(__gcc_nested_func_ptr_created): Likewise.
libgcc/ChangeLog:__builtin_nested_func_ptr_created to
__gcc_nested_func_ptr_created and
libgcc/ChangeLog:__gcc_nested_func_ptr_created and
libgcc/ChangeLog:* libgcc2.h (__builtin_nested_func_ptr_created):
Declare.
libgcc/config/aarch64/heap-trampoline.c:void __gcc_nested_func_ptr_created
(void *chain, void *func, void *dst);
libgcc/config/aarch64/heap-trampoline.c:__gcc_nested_func_ptr_created (void
*chain, void *func, void *dst)
libgcc/config/i386/heap-trampoline.c:void __gcc_nested_func_ptr_created (void
*chain, void *func, void *dst);
libgcc/config/i386/heap-trampoline.c:__gcc_nested_func_ptr_created (void
*chain, void *func, void *dst)
libgcc/libgcc-std.ver.in:  __gcc_nested_func_ptr_created
libgcc/libgcc2.h:extern void __gcc_nested_func_ptr_created (void *, void *,
void *);
$

So, none of the Ada source files used to build gen_il-main contain references
to it... I'm wondering if it might be due to the version of gnatmake I'm using
to bootstrap? Here's its version info:

$ /usr/local/bin/gnatmake --version
GNATMAKE 14.0.0 20231204 (experimental) [master 2fde54ad7be]
Copyright (C) 1995-2023, Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

$

(and yes, I've al

[Bug target/116021] Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

--- Comment #1 from Iain Sandoe  ---
The problem with fixing this is that I cannot reproduce it; we are still trying
to determine if there's some dependency on environment - or maybe something
bizarre like the installed version of some utility like gawk etc.

I can bootstrap and test all languages including Ada (on x86_64 darwin) using
GCC-7.5, 10.5 and 11.4 - results on testresults@

(I've just done r15-2183-g58b78cf068b3 on x86_64-darwin21 under rosetta2 and on
x86_64 darwin 23, 21 and 19 native).

NOTE: my compiler builds and tests do not include any macports or homebrew
components.  The only additional content in my PATH is 1) texinfo-6.7 2)
dejagnu and the bootstrap GCC installation (obv. needed for Ada).

I would really like to resolve this before we issue 14.2-darwin (it's likely
too late to fix anything on the release branch).

[Bug target/58416] Incorrect x87-based union copying code

2024-07-21 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58416

--- Comment #14 from Richard Biener  ---
(In reply to Richard Biener from comment #13)
> Created attachment 58718 [details]
> patch I am testing
> 
> Paul - can you test if this patch resolves the emacs issue?

Using root->grp_same_access_path doesn't seem to be a perfect fit.  For
gcc.dg/tree-ssa/sra-6.c we're now doing

Changing the type of a replacement for b offset: 0, size: 64  to an integer.

But maybe that's OK or we need a different flag to tell whether the access
paths are the same or just the tail of the access path, so 's' and 's.a'
would be OK for a root 's.a.f', allowing aggregate (sub-)copies but that
would assume we copy field-wise which we don't do - we RTL expand to
(inlined) memcpy which is also not semantically the same for x87 float
fields (but would it have to be?)

[Bug target/116021] Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

--- Comment #2 from Iain Sandoe  ---
(In reply to Iain Sandoe from comment #1)

> NOTE: my compiler builds and tests do not include any macports or homebrew
> components.  The only additional content in my PATH is 1) texinfo-6.7 2)
> dejagnu and the bootstrap GCC installation (obv. needed for Ada).

FAOD: my dejagnu install is self-contained (it includes tcl+expect)... however
it seems extremely unlikely that this is in any way related to a build issue.

[Bug c++/115434] Post contracts are ignored on functions with no return statement.

2024-07-21 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115434

--- Comment #3 from Iain Sandoe  ---
fixed on trunk, not sure if we need to back port - but leaving open for now.

[Bug c++/110871] coroutine precondition should be evaluated before the initial suspend

2024-07-21 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110871

--- Comment #2 from Iain Sandoe  ---
fixed on trunk, not sure if we need to back port, leaving open for now.

[Bug c++/110872] coroutine postcondition is not evaluated

2024-07-21 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110872

--- Comment #2 from Iain Sandoe  ---
fixed on trunk, not sure if we need to back port, leaving open for now.

[Bug c++/104981] [coroutines] Internal compiler error when promise object's constructor takes a base class of the object parameter

2024-07-21 Thread arsen at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104981

Arsen Arsenović  changed:

   What|Removed |Added

 CC||arsen at gcc dot gnu.org

--- Comment #4 from Arsen Arsenović  ---
the latter seems OK to me - mind proposing a patch?

[Bug debug/96635] Feature request: PDB/Codeview support

2024-07-21 Thread mark at harmstone dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96635

--- Comment #4 from Mark Harmstone  ---
(In reply to Andrew Pinski from comment #2)
> The patches to support CodeView is being added (and improved) for GCC 15. I
> am not sure how much will be finished by the release of GCC 15.

Support for C is very nearly finished. I hope to get all the C++ stuff
(namespaces, templates, class member functions) done for GCC 15 too.

[Bug tree-optimization/116022] New: complete (early) unrolling foils vectorizer for vector initialization

2024-07-21 Thread amylaar at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116022

Bug ID: 116022
   Summary: complete (early) unrolling foils vectorizer for vector
initialization
   Product: gcc
   Version: 15.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: amylaar at gcc dot gnu.org
  Target Milestone: ---

#define LENGTH 4
typedef unsigned uint32v_t __attribute ((vector_size (LENGTH * 4)));

uint32v_t vdup_u32(uint32v_t a, unsigned b)
{
  uint32v_t r;
  int i;
  for (i = 0; i < LENGTH; i++)
r[i] = b;
  return r;
}

For x86_64-pc-linux-gnu, with -O1 -ftree-vectorize, we get:

vdup_u32:
.LFB0:
.cfi_startproc
movd%edi, %xmm1
pshufd  $0, %xmm1, %xmm0
ret

which is fine.

However, with -O3, the complete unroller is run before the vectorizer, and
instead we get:
vdup_u32:
.LFB0:
.cfi_startproc
movd%edi, %xmm0
movd%edi, %xmm1
pshufd  $225, %xmm0, %xmm0
movss   %xmm1, %xmm0
pshufd  $225, %xmm0, %xmm0
pshufd  $198, %xmm0, %xmm0
movss   %xmm1, %xmm0
pshufd  $198, %xmm0, %xmm0
pshufd  $39, %xmm0, %xmm0
movss   %xmm1, %xmm0
pshufd  $39, %xmm0, %xmm0
ret

making the code both larger and slower.

According to https://gcc.gnu.org/projects/tree-ssa/vectorization.htm , this was
supposed
to be handled by SLP, but apparently that is not happening.

See dump files produced by -fdump-tree-rebuild_frequencies -fdump-tree-cunrolli
-fdump-tree-vect
for details.

[Bug rtl-optimization/115877] [15 Regression] wrong code at -Os (missing zero extension)

2024-07-21 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115877

--- Comment #9 from GCC Commits  ---
The master branch has been updated by Jeff Law :

https://gcc.gnu.org/g:91e468b72dafc9dcd5dcf7915f1d0ef172264d53

commit r15-2185-g91e468b72dafc9dcd5dcf7915f1d0ef172264d53
Author: Jeff Law 
Date:   Sun Jul 21 07:36:37 2024 -0600

[PR rtl-optimization/115877] Fix livein computation for ext-dce

So I'm not yet sure how I'm going to break everything down, but this is
easy
enough to break out as 1/N of ext-dce fixes/improvements.

When handling uses in an insn, we first determine what bits are set in the
destination which is represented in DST_MASK.  Then we use that to refine
what
bits are live in the source operands.

In the source operand handling section we *modify* DST_MASK if the source
operand is a SUBREG (ugh!).  So if the first operand is a SUBREG, then we
can
incorrectly compute which bit groups are live in the second operand,
especially
if it is a SUBREG as well.

This was seen when testing a larger set of patches on the rl78 port
(builtin-arith-overflow-p-7 & pr71631 execution failures), so no new test
for
this bugfix.

Run through my tester (in conjunction with other ext-dce changes) on the
various cross targets.  Run individually through a bootstrap and regression
test cycle on x86_64 as well.

Pushing to the trunk.

PR rtl-optimization/115877
gcc/
* ext-dce.cc (ext_dce_process_uses): Restore the value of DST_MASK
for reach operand.

[Bug tree-optimization/116023] New: Failure to optimize (x+x)*(y+y) to (x*y)*4 when intermediate result is cast to larger type

2024-07-21 Thread gabravier at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116023

Bug ID: 116023
   Summary: Failure to optimize (x+x)*(y+y) to (x*y)*4 when
intermediate result is cast to larger type
   Product: gcc
   Version: 15.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gabravier at gmail dot com
  Target Milestone: ---

int32_t mulx32(int32_t x, int32_t y)
{
uint64_t r1 = (uint64_t)(x + x) * (uint64_t)(y + y);
return r1;
}

This can be optimized to `return (x * y) * 4`. When compiling with `-O3`, this
transformation is done by LLVM, but not by GCC.

This seems related to the 64-bit casts and the use of a temporary variable, as
either changing the code to `return (uint64_t)((uint64_t)(x + x) * (uint64_t)(y
+ y))` or replacing all occurrences of `uint64_t` with `uint32_t` makes it so
the function is appropriately optimized.

[Bug target/116021] Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread schwab--- via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

--- Comment #3 from Andreas Schwab  ---
You need to use an older Ada compiler (13 or older) for bootstrapping, not any
of the broken intermediate versions between Aug 2023 and Jan 2024.

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

cqwrteur  changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |---

--- Comment #43 from cqwrteur  ---
(In reply to Andrew Pinski from comment #42)
> (In reply to frankhb1989 from comment #41)
> > I ran into exact the same trouble of C23 missing symbols on old systems. In
> > my case it is a custom build (with tailored source) of libfreeimage which
> > has some calls to `sscanf` pulling the unwanted symbol references (to
> > `__isoc23_sscanf@GLIBC_2.38`) into the library
> 
> That is not a glibc issue but rather you are thinking glibc will be forwards
> compatible; glibc is not and never can be; this is true for almost all OS
> out there (Mac OS has a similar issue though they provide sysroots with all
> needed headers/libraries so it is slightly easier to handle rather than you
> need to go out and find one). It is definitely backwards compatiable. If you
> want to build a program that runs on older systems you 100% need to use the
> earliest version of glibc to link (and use headers from) against rather than
> the newest version.

This is completely BS. Old libc cannot build with the latest gcc since the
script messed up. People end up stuck with old versions of C++ standards, which
is unacceptable. If GNU folks continue f things up, I can guarantee you
everyone will move to LLVM

[Bug ipa/116024] New: [14/15 Regression] unnecessary integer comparison(s) for a simple loop

2024-07-21 Thread artemiy at synopsys dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116024

Bug ID: 116024
   Summary: [14/15 Regression] unnecessary integer comparison(s)
for a simple loop
   Product: gcc
   Version: 14.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: artemiy at synopsys dot com
CC: jh at suse dot cz
  Target Milestone: ---
Target: riscv32-unknown-elf

gcc 14 and later emits unnecessary instructions when compiling the i() function
in the following code:
$ cat test.i
# 0 "test.c"
# 0 ""
# 0 ""
# 1 "test.c"
typedef enum { a, b } c;
extern char d, e;
c f()
{
  if (d)
return a;
  d = e;
  return b;
}
void i()
{
  int l = 2;
  while (l <= 2)
if (f() == a)
  l++;
}

$ riscv32-unknown-elf-gcc test.i -S -O3 -fno-inline -Wall -Wextra
$ cat test.s
[snip]
i:
addisp,sp,-16
sw  s0,8(sp)
sw  s1,4(sp)
sw  ra,12(sp)
li  s1,3
li  s0,2
.L6:
callf
sub a0,s1,a0
beq a0,s0,.L6
[snip]

gcc 13.2.0 doesn’t load any immediates and just emits a branch-if-not-zero:

[snip]
i:
addisp,sp,-16
sw  ra,12(sp)
.L6:
callf
bne a0,zero,.L6
[snip]

I have bisected the introduction of this behavior down to:

commit 53ba8d669550d3a1f809048428b97ca607f95cf5
Author: Jan Hubicka 
Date:   Mon Nov 20 19:35:53 2023 +0100

inter-procedural value range propagation

I can't be too sure, but I think what ends up happening is that the ipa-cp pass
propagates the range of return values of f() ({0,1}), then later on phiopt2
uses this to expand the PHI node to something like 3 - f() == 2:

  [local count: 955630224]:
  # DEBUG BEGIN_STMT
  _1 = f ();
  _6 = (int) _1;
  _8 = 3 - _6;

   [local count: 1073741824]:
  # l_2 = PHI <_8(3), 2(2)>
  # DEBUG l => l_2
  # DEBUG BEGIN_STMT
  if (l_2 == 2)
goto ; [89.00%]
  else
goto ; [11.00%]

And the aforementioned expression never gets simplified back to f() != 0,
resulting in more complicated assembly code.  Indeed, specifying -fno-ipa-vrp
(or -fno-ssa-phiopt) works as a temporary workaround.

godbolt for convenience: https://godbolt.org/z/xr1oTrW51
gcc -v output: 
$ riscv32-unknown-elf-gcc -v
Using built-in specs.
COLLECT_GCC=riscv32-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/home/art/work/install/riscv-gnu-toolchain/libexec/gcc/riscv32-unknown-elf/15.0.0/lto-wrapper
Target: riscv32-unknown-elf
Configured with: /home/art/work/src/gcc/configure --target=riscv32-unknown-elf
--prefix=/home/art/work/install/riscv-gnu-toolchain --disable-shared
--disable-threads --enable-languages=c,c++ --with-pkgversion=g80c37335baf
--with-system-zlib --enable-tls --with-newlib
--with-sysroot=/home/art/work/install/riscv-gnu-toolchain/riscv32-unknown-elf
--with-native-system-header-dir=/include --disable-libmudflap --disable-libssp
--disable-libquadmath --disable-libgomp --disable-nls
--disable-tm-clone-registry --src=/home/art/work/src/gcc --enable-multilib
--with-abi=ilp32 --with-arch=rv32gc --with-tune=rocket --with-isa-spec=20191213
'CFLAGS_FOR_TARGET=-Os' 'CXXFLAGS_FOR_TARGET=-Os'
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 15.0.0 20240721 (experimental) (g80c37335baf)

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

--- Comment #44 from cqwrteur  ---
(In reply to Andrew Pinski from comment #42)
> (In reply to frankhb1989 from comment #41)
> > I ran into exact the same trouble of C23 missing symbols on old systems. In
> > my case it is a custom build (with tailored source) of libfreeimage which
> > has some calls to `sscanf` pulling the unwanted symbol references (to
> > `__isoc23_sscanf@GLIBC_2.38`) into the library
> 
> That is not a glibc issue but rather you are thinking glibc will be forwards
> compatible; glibc is not and never can be; this is true for almost all OS
> out there (Mac OS has a similar issue though they provide sysroots with all
> needed headers/libraries so it is slightly easier to handle rather than you
> need to go out and find one). It is definitely backwards compatiable. If you
> want to build a program that runs on older systems you 100% need to use the
> earliest version of glibc to link (and use headers from) against rather than
> the newest version.

https://github.com/trcrsired/glibc/commit/4a724a45761fe27000247267d6ea02cb64b17b3c#diff-e1c081599cb4df1d7224ee161959d04457b256c4b269e428baec5a6d34e630d1

My patch just works perfectly. Don't know what's your opposition. I am not even
suggest an ABI lock down or something

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #45 from Andrew Pinski  ---
.

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

cqwrteur  changed:

   What|Removed |Added

 Resolution|WONTFIX |---
 Status|RESOLVED|UNCONFIRMED

--- Comment #46 from cqwrteur  ---
(In reply to Andrew Pinski from comment #45)
> .

Even Microsoft does this right with _WIN32_WINNT and _WIN32_WINDOWS macros etc,
I don't know what's wrong with adding the similar mechanism for glibc.

[Bug rtl-optimization/115877] [15 Regression] wrong code at -Os (missing zero extension)

2024-07-21 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115877

--- Comment #10 from GCC Commits  ---
The master branch has been updated by Jeff Law :

https://gcc.gnu.org/g:9d8ef2711dfecd093077aef6123d9e93ea23454e

commit r15-2186-g9d8ef2711dfecd093077aef6123d9e93ea23454e
Author: Jeff Law 
Date:   Sun Jul 21 08:41:28 2024 -0600

[PR rtl-optimization/115877][2/n] Improve liveness computation for constant
initialization

While debugging pr115877, I noticed we were failing to remove the
destination
register from LIVENOW bitmap when it was set to a constant value.  ie  (set
(dest) (const_int)).  This was a trivial oversight in
safe_for_live_propagation.

I don't have an example of this affecting code generation, but it certainly
could.  More importantly, by making LIVENOW more accurate it's easier to
debug
when LIVENOW differs from expectations.

As with the prior patch this has been tested as part of a larger patchset
with
the crosses as well as individually on x86_64.

Pushing to the trunk,

PR rtl-optimization/115877
gcc/
* ext-dce.cc (safe_for_live_propagation): Handle RTX_CONST_OBJ.

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |INVALID
 Status|UNCONFIRMED |RESOLVED

--- Comment #47 from Andrew Pinski  ---
Apple provides different sysroots for each (major) version of their OS to solve
this issue. This is NOT a GCC issue nor this is a glibc issue. You can buld gcc
against majority of old sysroot just fine. I have built against the trunk of
gcc against a centos 6 sysroot before (actually I have built on the trunk after
it started to require C++11 on a centos 6 machine too).

[Bug ipa/116024] [14/15 Regression] unnecessary integer comparison(s) for a simple loop since r14-5628-g53ba8d669550d3

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116024

--- Comment #1 from Andrew Pinski  ---
It is VRP which is going funny.

[Bug middle-end/116024] [14/15 Regression] unnecessary integer comparison(s) for a simple loop since r14-5628-g53ba8d669550d3

2024-07-21 Thread sjames at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116024

Sam James  changed:

   What|Removed |Added

 CC||sjames at gcc dot gnu.org
  Component|ipa |middle-end

--- Comment #2 from Sam James  ---
sorry, I hadn't seen you'd changed component

[Bug c++/116015] ICE in replace_placeholders_r for simple default member initializer

2024-07-21 Thread pieter.p.dev at outlook dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116015

--- Comment #3 from Pieter P  ---
A temporary workaround is to wrap the default value in an immediately invoked
lambda:

struct Widget {
int n = 5;
Matrix A = [this] { return Matrix{{.rows = n}}; }();
};

[Bug rtl-optimization/115877] [15 Regression] wrong code at -Os (missing zero extension)

2024-07-21 Thread sjames at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115877

Sam James  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

[Bug tree-optimization/116024] [14/15 Regression] unnecessary integer comparison(s) for a simple loop since r14-5628-g53ba8d669550d3

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116024

Andrew Pinski  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
 Blocks|85316   |
   Last reconfirmed||2024-07-21
 CC|hubicka at gcc dot gnu.org,|pinskia at gcc dot 
gnu.org
   |jh at suse dot cz  |
  Component|middle-end  |tree-optimization
   Target Milestone|--- |14.2

--- Comment #3 from Andrew Pinski  ---
Note I don't think IPA is the issue of exporting (correctly) the return value
range. The problem is VRP decides to create `a == 0 ? 2 : 3` which gets
converted into `3 - a` (which then vrp again converts into `a == 0 ? 2 : 3`).

But then `(3 - a) == 2` is never optimized to just `a == 0` by match or
something else.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85316
[Bug 85316] [meta-bug] VRP range propagation missed cases

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread arsen at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

--- Comment #48 from Arsen Arsenović  ---
Please stop resetting the bug status.  You create unneeded churn.  This bug is
invalid.

(In reply to cqwrteur from comment #43)
> This is completely BS. Old libc cannot build with the latest gcc since the
> script messed up. People end up stuck with old versions of C++ standards,
> which is unacceptable. If GNU folks continue f things up, I can guarantee
> you everyone will move to LLVM
Fix the build script then, rather than breaking the compiler.

(In reply to cqwrteur from comment #44)
> https://github.com/trcrsired/glibc/commit/
> 4a724a45761fe27000247267d6ea02cb64b17b3c#diff-
> e1c081599cb4df1d7224ee161959d04457b256c4b269e428baec5a6d34e630d1
> 
> My patch just works perfectly. Don't know what's your opposition. I am not
> even suggest an ABI lock down or something
"WFM" is a dangerous and broken mindset that cannot be applied here.  The patch
above is a nonsense hack in the libc.

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

cqwrteur  changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |---

--- Comment #49 from cqwrteur  ---
(In reply to Andrew Pinski from comment #47)
> Apple provides different sysroots for each (major) version of their OS to
> solve this issue. This is NOT a GCC issue nor this is a glibc issue. You can
> buld gcc against majority of old sysroot just fine. I have built against the
> trunk of gcc against a centos 6 sysroot before (actually I have built on the
> trunk after it started to require C++11 on a centos 6 machine too).

I need to do Canadian compilation. I cannot install centos and I don't want
eithert

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

--- Comment #50 from cqwrteur  ---
(In reply to Arsen Arsenović from comment #48)
> Please stop resetting the bug status.  You create unneeded churn.  This bug
> is invalid.
> 
> (In reply to cqwrteur from comment #43)
> > This is completely BS. Old libc cannot build with the latest gcc since the
> > script messed up. People end up stuck with old versions of C++ standards,
> > which is unacceptable. If GNU folks continue f things up, I can guarantee
> > you everyone will move to LLVM
> Fix the build script then, rather than breaking the compiler.
> 
> (In reply to cqwrteur from comment #44)
> > https://github.com/trcrsired/glibc/commit/
> > 4a724a45761fe27000247267d6ea02cb64b17b3c#diff-
> > e1c081599cb4df1d7224ee161959d04457b256c4b269e428baec5a6d34e630d1
> > 
> > My patch just works perfectly. Don't know what's your opposition. I am not
> > even suggest an ABI lock down or something
> "WFM" is a dangerous and broken mindset that cannot be applied here.  The
> patch above is a nonsense hack in the libc.

How is that a nonsense hack? It just works by forcing the version to be
stabilized as 2.34.

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

--- Comment #51 from cqwrteur  ---
(In reply to Arsen Arsenović from comment #48)
> Please stop resetting the bug status.  You create unneeded churn.  This bug
> is invalid.
> 
> (In reply to cqwrteur from comment #43)
> > This is completely BS. Old libc cannot build with the latest gcc since the
> > script messed up. People end up stuck with old versions of C++ standards,
> > which is unacceptable. If GNU folks continue f things up, I can guarantee
> > you everyone will move to LLVM
> Fix the build script then, rather than breaking the compiler.
> 
> (In reply to cqwrteur from comment #44)
> > https://github.com/trcrsired/glibc/commit/
> > 4a724a45761fe27000247267d6ea02cb64b17b3c#diff-
> > e1c081599cb4df1d7224ee161959d04457b256c4b269e428baec5a6d34e630d1
> > 
> > My patch just works perfectly. Don't know what's your opposition. I am not
> > even suggest an ABI lock down or something
> "WFM" is a dangerous and broken mindset that cannot be applied here.  The
> patch above is a nonsense hack in the libc.

Again I do not do native compilation for linux. Do you understand? I do not
native compile linux binaries. I always build linux binaries on windows

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

--- Comment #52 from cqwrteur  ---
(In reply to Andrew Pinski from comment #47)
> Apple provides different sysroots for each (major) version of their OS to
> solve this issue. This is NOT a GCC issue nor this is a glibc issue. You can
> buld gcc against majority of old sysroot just fine. I have built against the
> trunk of gcc against a centos 6 sysroot before (actually I have built on the
> trunk after it started to require C++11 on a centos 6 machine too).

Apple? No wonder why apple bs cannot take over windows because only Microsoft
does this right

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

--- Comment #53 from cqwrteur  ---
(In reply to Arsen Arsenović from comment #48)
> Please stop resetting the bug status.  You create unneeded churn.  This bug
> is invalid.
> 
> (In reply to cqwrteur from comment #43)
> > This is completely BS. Old libc cannot build with the latest gcc since the
> > script messed up. People end up stuck with old versions of C++ standards,
> > which is unacceptable. If GNU folks continue f things up, I can guarantee
> > you everyone will move to LLVM
> Fix the build script then, rather than breaking the compiler.
> 
> (In reply to cqwrteur from comment #44)
> > https://github.com/trcrsired/glibc/commit/
> > 4a724a45761fe27000247267d6ea02cb64b17b3c#diff-
> > e1c081599cb4df1d7224ee161959d04457b256c4b269e428baec5a6d34e630d1
> > 
> > My patch just works perfectly. Don't know what's your opposition. I am not
> > even suggest an ABI lock down or something
> "WFM" is a dangerous and broken mindset that cannot be applied here.  The
> patch above is a nonsense hack in the libc.

https://news.ycombinator.com/item?id=32471624

Everyone disagrees with gnu's policy here. Even linus torvalds disagrees

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

--- Comment #54 from cqwrteur  ---
(In reply to Arsen Arsenović from comment #48)
> Please stop resetting the bug status.  You create unneeded churn.  This bug
> is invalid.
> 
> (In reply to cqwrteur from comment #43)
> > This is completely BS. Old libc cannot build with the latest gcc since the
> > script messed up. People end up stuck with old versions of C++ standards,
> > which is unacceptable. If GNU folks continue f things up, I can guarantee
> > you everyone will move to LLVM
> Fix the build script then, rather than breaking the compiler.
> 
> (In reply to cqwrteur from comment #44)
> > https://github.com/trcrsired/glibc/commit/
> > 4a724a45761fe27000247267d6ea02cb64b17b3c#diff-
> > e1c081599cb4df1d7224ee161959d04457b256c4b269e428baec5a6d34e630d1
> > 
> > My patch just works perfectly. Don't know what's your opposition. I am not
> > even suggest an ABI lock down or something
> "WFM" is a dangerous and broken mindset that cannot be applied here.  The
> patch above is a nonsense hack in the libc.

https://www.youtube.com/watch?v=5PmHRSeA2c8&t=283s

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #55 from Andrew Pinski  ---
https://en.wikipedia.org/wiki/Forward_compatibility

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread unlvsur at live dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

cqwrteur  changed:

   What|Removed |Added

 Resolution|WONTFIX |---
 Status|RESOLVED|UNCONFIRMED

--- Comment #56 from cqwrteur  ---
(In reply to Andrew Pinski from comment #55)
> https://en.wikipedia.org/wiki/Forward_compatibility

This has nothing to do with forward compatibility. This is about satisfying C++
standard.

[Bug c/114930] [14/15 regression] ICE in fld_incomplete_type_of when building libwebp with -std=c23 -flto

2024-07-21 Thread sjames at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114930

Sam James  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
  Known to work||14.1.1, 15.0

--- Comment #10 from Sam James  ---
.

[Bug c/115502] [15 regression] ICE when building Valgrind with -std=c23 (comptypes_same_p, at c/c-typeck.cc:1227) since r15-934-gd2cfe8a73b3c41

2024-07-21 Thread sjames at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115502

Sam James  changed:

   What|Removed |Added

  Known to work||14.1.1, 15.0
 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #12 from Sam James  ---
.

[Bug c/115502] [15 regression] ICE when building Valgrind with -std=c23 (comptypes_same_p, at c/c-typeck.cc:1227) since r15-934-gd2cfe8a73b3c41

2024-07-21 Thread sjames at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115502
Bug 115502 depends on bug 114930, which changed state.

Bug 114930 Summary: [14/15 regression] ICE in fld_incomplete_type_of when 
building libwebp with -std=c23 -flto
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114930

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

[Bug libstdc++/115907] Libstdc++ and GCC itself should avoid glibc above 2.34 dependency

2024-07-21 Thread arsen at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907

Arsen Arsenović  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #57 from Arsen Arsenović  ---
(In reply to cqwrteur from comment #51)
> Again I do not do native compilation for linux. Do you understand? I do not
> native compile linux binaries. I always build linux binaries on windows
I do not see the relevance of this.  You need to link and compile against some
libraries and headers whereever you compile.  Just use older libraries and
headers.

(In reply to cqwrteur from comment #49)
> I need to do Canadian compilation. I cannot install centos and I don't want
> eithert
Nor do you need to.  This was said to point out that you can use quite old
systems to build GCC.  Nothing about CentOS in particular is relevant.

(In reply to cqwrteur from comment #50)
> How is that a nonsense hack? It just works by forcing the version to be
> stabilized as 2.34.
No, it doesn't.  It happens to coincidentally work by removing a feature test
macro.  The fact the result is non-obvious from the patch body corroborates
what I said.

(In reply to cqwrteur from comment #53)
> This has nothing to do with forward compatibility. This is about satisfying
> C++ standard.
It has only to do with forwards compatibility.  You're downgrading a library
and expecting it to work.  It will not without forwards compatibility.  Nobody
provides forwards compatibility for libraries for obvious reasons.

Please stop spamming the bug tracker now.

[Bug target/116007] libquadmath fails to build with libgcc/soft-fp/quad.h:69:1: error: unable to emulate 'TF'

2024-07-21 Thread awilfox at adelielinux dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116007

A. Wilcox (awilfox)  changed:

   What|Removed |Added

 CC||awilfox at adelielinux dot org

--- Comment #9 from A. Wilcox (awilfox)  ---
There is no musl that supports IBM double-double, and there is no plan to ever
support this upstream.

There is a patch set circulating around for musl that adds IEEE binary128
support (requiring ISA 3.0), but it is not yet upstream because they are
deciding what to name the ABI.  (the proposed name as powerpc64_f128 but it
wasn't accepted that way.)

I have just run into this trying to build trunk on ppc64-musl without
explicitly passing --enable-libquadmath:

 * /bin/sh
/var/tmp/portage/sys-devel/gcc-15.0./work/gcc-15.0./configure
--host=powerpc64-gentoo-linux-musl --build=powerpc64-gentoo-linux-musl
--prefix=/usr --bindir=/usr/powerpc64-gentoo-linux-musl/gcc-bin/15
--includedir=/usr/lib/gcc/powerpc64-gentoo-linux-musl/15/include
--datadir=/usr/share/gcc-data/powerpc64-gentoo-linux-musl/15
--mandir=/usr/share/gcc-data/powerpc64-gentoo-linux-musl/15/man
--infodir=/usr/share/gcc-data/powerpc64-gentoo-linux-musl/15/info
--with-gxx-include-dir=/usr/lib/gcc/powerpc64-gentoo-linux-musl/15/include/g++-v15
--disable-silent-rules --disable-dependency-tracking
--with-python-dir=/share/gcc-data/powerpc64-gentoo-linux-musl/15/python
--enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt
--disable-werror --with-system-zlib --disable-nls
--disable-libunwind-exceptions --enable-checking=yes,extra
--with-bugurl=https://bugs.gentoo.org/ --with-pkgversion=Gentoo Hardened
15.0. p, commit b1a31eaaeae90d7b7774bfb45f9954dc586f4dea
--with-gcc-major-version-only --enable-libstdcxx-time --enable-lto
--disable-libstdcxx-pch --enable-shared --enable-threads=posix
--enable-__cxa_atexit --disable-multilib --disable-fixed-point --with-abi=elfv2
--enable-targets=all --enable-libgomp --disable-libssp --disable-libada
--disable-systemtap --disable-valgrind-annotations --disable-vtable-verify
--disable-libvtv --with-zstd --without-isl --disable-libsanitizer
--enable-default-pie --enable-host-pie --enable-host-bind-now
--enable-default-ssp --disable-fixincludes

[...]

/var/tmp/portage/sys-devel/gcc-15.0./work/gcc-15.0./libquadmath/math/../../libgcc/soft-fp/quad.h:69:1:
error: unable to emulate 'TF'
   69 | typedef float TFtype __attribute__ ((mode (TF)));
  | ^~~
make[3]: *** [Makefile:984: math/sqrtq.lo] Error 1


Does --disable-libquadmath need to be explicitly passed on ppc64-musl systems
that are not using the musl "f128" patches?

[Bug fortran/59104] 15 Regression - Wrong result with SIZE specification expression

2024-07-21 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59104

--- Comment #18 from GCC Commits  ---
The master branch has been updated by Paul Thomas :

https://gcc.gnu.org/g:838999bb23303edc14e96b6034cd837fa4454cfd

commit r15-2187-g838999bb23303edc14e96b6034cd837fa4454cfd
Author: Paul Thomas 
Date:   Sun Jul 21 17:48:47 2024 +0100

Fortran: Fix regression caused by r14-10477 [PR59104]

2024-07-21  Paul Thomas  

gcc/fortran
PR fortran/59104
* gfortran.h : Add decl_order to gfc_symbol.
* symbol.cc : Add static next_decl_order..
(gfc_set_sym_referenced): Set symbol decl_order.
* trans-decl.cc : Include dependency.h.
(decl_order): Replace symbol declared_at.lb->location with
decl_order.

gcc/testsuite/
PR fortran/59104
* gfortran.dg/dependent_decls_3.f90: New test.

[Bug tree-optimization/116024] [14/15 Regression] unnecessary integer comparison(s) for a simple loop since r14-5628-g53ba8d669550d3

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116024

--- Comment #4 from Andrew Pinski  ---
So the missed optimizations that VRP/PHIopt/match expose are:
```
unsigned f(void);
int i1(void)
{
  int l = 2;
  l = 3 - (int)f();
  return l <= 2; // f() > 0
}
int i2(void)
{
  unsigned l = 2;
  l = 3 - (unsigned)f();
  return l <= 2; // f() - 1 < 3
}

int i3(void)
{
  unsigned l = 2;
  l = 3 + (unsigned)f();
  return l <= 2; // f() > -4u
}

int i4(void)
{
  int l = 2;
  l = 3 + (int)f();
  return l <= 2; // f() < 0
}

```

This can be done even without knowing the range of `f()` here. and these is
done by clang already. Note GCC does handle i4 is already.

[Bug fortran/59104] Wrong result with SIZE specification expression

2024-07-21 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59104

Paul Thomas  changed:

   What|Removed |Added

Summary|15 Regression - Wrong   |Wrong result with SIZE
   |result with SIZE|specification expression
   |specification expression|

--- Comment #19 from Paul Thomas  ---
OK the regression is fixed - thanks for the green light, Harald.

It's a pity that I have missed the 4.2 release :-(

Paul

[Bug fortran/59104] Wrong result with SIZE specification expression

2024-07-21 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59104

--- Comment #20 from Paul Thomas  ---
OK the regression is fixed - thanks for the green light, Harald.

It's a pity that I have missed the 4.2 release :-(

Paul

[Bug tree-optimization/116022] complete (early) unrolling foils vectorizer for vector initialization

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116022

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|UNCONFIRMED |RESOLVED

--- Comment #1 from Andrew Pinski  ---
Dup of bug 93237.

*** This bug has been marked as a duplicate of bug 93237 ***

[Bug tree-optimization/93237] vector defined using inserts is not converted into constructors

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93237

Andrew Pinski  changed:

   What|Removed |Added

 CC||amylaar at gcc dot gnu.org

--- Comment #2 from Andrew Pinski  ---
*** Bug 116022 has been marked as a duplicate of this bug. ***

[Bug c++/104981] [coroutines] Internal compiler error when promise object's constructor takes a base class of the object parameter

2024-07-21 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104981

--- Comment #5 from Iain Sandoe  ---
(In reply to Arsen Arsenović from comment #4)
> the latter seems OK to me - mind proposing a patch?

I am planning on doing some rework on the ramp code-gen in the (very) near
future - so can pick this up on the way (unless Patrick has already done it ...
)

[Bug fortran/59104] Wrong result with SIZE specification expression

2024-07-21 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59104

--- Comment #21 from anlauf at gcc dot gnu.org ---
(In reply to Paul Thomas from comment #20)
> OK the regression is fixed - thanks for the green light, Harald.
> 
> It's a pity that I have missed the 4.2 release :-(
> 
> Paul

It is more important that 14.2 gets regression-free out of the door.

Unfortunately I test my codes less with trunk than with the latest release
branch, otherwise I would have discovered the issue in comment#12 earlier.

It takes too much time to regularly rebuild a larger software stack with
trunk on my notebook, so I normally do this later in the development cycle.
Just did that, and it seems to look good. :-)

Anyway, the complete fix for this PR still looks like a candidate for
14-branch to me, maybe for a more quiet time with sufficient distance
to release dates...

Thanks for the quick reaction and the fix on trunk!

Harald

[Bug fortran/103115] [12/13/14/15 Regression] reallocation of character array fails when appending a constant size 4 array

2024-07-21 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103115

--- Comment #18 from GCC Commits  ---
The releases/gcc-13 branch has been updated by Harald Anlauf
:

https://gcc.gnu.org/g:ae6d5dc35735168c13f4599e7cf3f32fbb3c06c9

commit r13-8930-gae6d5dc35735168c13f4599e7cf3f32fbb3c06c9
Author: Harald Anlauf 
Date:   Thu Jul 18 21:15:48 2024 +0200

Fortran: character array constructor with >= 4 constant elements [PR103115]

gcc/fortran/ChangeLog:

PR fortran/103115
* trans-array.cc (gfc_trans_array_constructor_value): If the first
element of an array constructor is deferred-length character and
therefore does not have an element size known at compile time, do
not try to collect subsequent constant elements into a constructor
for optimization.

gcc/testsuite/ChangeLog:

PR fortran/103115
* gfortran.dg/string_array_constructor_4.f90: New test.

(cherry picked from commit c93be1606ecf8e0f65b96b67aa023fb456ceb3a3)

[Bug fortran/116025] New: Experimental implementation of unsigned integers for Fortran

2024-07-21 Thread tkoenig at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116025

Bug ID: 116025
   Summary: Experimental implementation of unsigned integers for
Fortran
   Product: gcc
   Version: 14.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tkoenig at gcc dot gnu.org
  Target Milestone: ---

https://j3-fortran.org/doc/year/24/24-116.txt has a proposal,
accepted by J3, to implement unsigned integers for Fortran.

I'll try to work on this a bit, probably on a development
branch, and see how far I get.

[Bug fortran/116025] Experimental implementation of unsigned integers for Fortran

2024-07-21 Thread tkoenig at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116025

Thomas Koenig  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |tkoenig at gcc dot 
gnu.org
   Last reconfirmed||2024-07-21

[Bug fortran/103115] [12/13/14/15 Regression] reallocation of character array fails when appending a constant size 4 array

2024-07-21 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103115

--- Comment #19 from GCC Commits  ---
The releases/gcc-12 branch has been updated by Harald Anlauf
:

https://gcc.gnu.org/g:ecc80e18f05b77a773c6d894871572029d4fc579

commit r12-10631-gecc80e18f05b77a773c6d894871572029d4fc579
Author: Harald Anlauf 
Date:   Thu Jul 18 21:15:48 2024 +0200

Fortran: character array constructor with >= 4 constant elements [PR103115]

gcc/fortran/ChangeLog:

PR fortran/103115
* trans-array.cc (gfc_trans_array_constructor_value): If the first
element of an array constructor is deferred-length character and
therefore does not have an element size known at compile time, do
not try to collect subsequent constant elements into a constructor
for optimization.

gcc/testsuite/ChangeLog:

PR fortran/103115
* gfortran.dg/string_array_constructor_4.f90: New test.

(cherry picked from commit c93be1606ecf8e0f65b96b67aa023fb456ceb3a3)

[Bug fortran/103115] [12/13/14/15 Regression] reallocation of character array fails when appending a constant size 4 array

2024-07-21 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103115

anlauf at gcc dot gnu.org changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|NEW |RESOLVED

--- Comment #20 from anlauf at gcc dot gnu.org ---
Fixed on mainline for gcc-15, and backported to all open branches.  Closing.

Thanks for the report!

[Bug tree-optimization/116023] Failure to optimize (x+x)*(y+y) to (x*y)*4 when intermediate result is cast to larger type

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116023

Andrew Pinski  changed:

   What|Removed |Added

   Severity|normal  |enhancement

[Bug sanitizer/116026] New: Copying or moving a std::variant that can be a vector causes a maybe-uninitialized warning with -fsanitize=address -Og -finline-functions-called-once

2024-07-21 Thread sebastian.r.gracia at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116026

Bug ID: 116026
   Summary: Copying or moving a std::variant that can be a vector
causes a maybe-uninitialized warning with
-fsanitize=address -Og -finline-functions-called-once
   Product: gcc
   Version: 14.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: sanitizer
  Assignee: unassigned at gcc dot gnu.org
  Reporter: sebastian.r.gracia at gmail dot com
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
  Target Milestone: ---

How to reproduce:

> cat code.cpp
#include 
#include 

extern "C" int printf(const char *, ...);

using node = std::variant, int>;

int main() {
int a{15};
[[maybe_unused]] node b = a;// line 1
// printf("%d", std::get(b));  // line 2
}


> g++ -Werror=maybe-uninitialized -fsanitize=address -Og 
> -finline-functions-called-once code.cpp
In file included from /usr/include/c++/14.1.1/vector:66,
 from code.cpp:2:
In destructor ‘std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = int;
_Alloc = std::allocator]’,
inlined from ‘std::vector<_Tp, _Alloc>::~vector() [with _Tp = int; _Alloc =
std::allocator]’ at /usr/include/c++/14.1.1/bits/stl_vector.h:738:7,
inlined from ‘constexpr void std::_Destroy(_Tp*) [with _Tp = vector]’
at /usr/include/c++/14.1.1/bits/stl_construct.h:151:22,
inlined from ‘std::__detail::__variant::_Variant_storage >, int>::_M_reset()::
mutable [with auto:1 = std::vector&]’ at
/usr/include/c++/14.1.1/variant:498:19,
inlined from ‘constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&,
_Args&& ...) [with _Res = void; _Fn =
__detail::__variant::_Variant_storage >,
int>::_M_reset()::; _Args = {vector >&}]’
at /usr/include/c++/14.1.1/bits/invoke.h:61:36,
inlined from ‘constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res,
_Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with
_Res = void; _Callable = __detail::__variant::_Variant_storage >, int>::_M_reset()::; _Args =
{vector >&}]’ at
/usr/include/c++/14.1.1/bits/invoke.h:111:28,
inlined from ‘static constexpr decltype(auto)
std::__detail::__variant::__gen_vtable_impl, std::integer_sequence >::__visit_invoke(_Visitor&&, _Variants ...) [with _Result_type
= void; _Visitor = std::__detail::__variant::_Variant_storage >, int>::_M_reset()::&&;
_Variants = {std::variant >, int>&}; long
unsigned int ...__indices = {0}]’ at /usr/include/c++/14.1.1/variant:1064:40,
inlined from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&,
_Variants&& ...) [with _Result_type = void; _Visitor =
__detail::__variant::_Variant_storage >,
int>::_M_reset()::; _Variants = {variant >, int>&}]’ at /usr/include/c++/14.1.1/variant:1816:5,
inlined from ‘constexpr void
std::__detail::__variant::_Variant_storage::_M_reset() [with
_Types = {std::vector >, int}]’ at
/usr/include/c++/14.1.1/variant:496:23,
inlined from ‘std::__detail::__variant::_Variant_storage::~_Variant_storage() [with _Types = {std::vector
>, int}]’ at /usr/include/c++/14.1.1/variant:506:17,
inlined from ‘std::__detail::__variant::_Copy_ctor_base >, int>::~_Copy_ctor_base()’ at
/usr/include/c++/14.1.1/variant:581:12,
inlined from ‘std::__detail::__variant::_Move_ctor_base >, int>::~_Move_ctor_base()’ at
/usr/include/c++/14.1.1/variant:618:12,
inlined from ‘std::__detail::__variant::_Copy_assign_base >, int>::~_Copy_assign_base()’ at
/usr/include/c++/14.1.1/variant:656:12,
inlined from ‘std::__detail::__variant::_Move_assign_base >, int>::~_Move_assign_base()’ at
/usr/include/c++/14.1.1/variant:708:12,
inlined from ‘std::__detail::__variant::_Variant_base >, int>::~_Variant_base()’ at
/usr/include/c++/14.1.1/variant:762:12,
inlined from ‘std::variant<_Types>::~variant() [with _Types =
{std::vector >, int}]’ at
/usr/include/c++/14.1.1/variant:1435:28,
inlined from ‘int main()’ at code.cpp:12:1:
/usr/include/c++/14.1.1/bits/stl_vector.h:369:31: error:
‘*(std::_Vector_base >*)((char*)&b +
offsetof(std::node, std::variant >,
int>::.std::__detail::__variant::_Variant_base >,
int>::.std::__detail::__variant::_Move_assign_base >,
int>::.std::__detail::__variant::_Copy_assign_base >,
int>::.std::__detail::__variant::_Move_ctor_base >,
int>::.std::__detail::__variant::_Copy_ctor_base >,
int>::.std::__detail::__variant::_Variant_storage >, int>::_M_u)).std::_Vector_base >::_M_impl.std::_Vector_base
>::_Vector_impl::std::_Vector_base
>::_Vector_impl_data.std::_Vector_base
>::_Vector_impl_data::_M_end_of_storage’ may be used uninitialized
[-Werror=maybe-uninitialized]
  369 |   _M_impl._M_end_of_storage - _M_impl._M_start);
  |   ^
code.cpp: In function ‘int main()’:
code.cpp:10:27: note: ‘b’ declared here
   10

[Bug sanitizer/116026] Copying or moving a std::variant that can be a vector causes a maybe-uninitialized warning with -fsanitize=address -Og -finline-functions-called-once

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116026

--- Comment #1 from Andrew Pinski  ---
Note the documentation warns about this case
https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc/Instrumentation-Options.html#index-fsanitize_003daddress

Note that sanitizers tend to increase the rate of false positive warnings, most
notably those around -Wmaybe-uninitialized. We recommend against combining
-Werror and [the use of] sanitizers.

[Bug debug/96635] Feature request: PDB/Codeview support

2024-07-21 Thread egallager at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96635

--- Comment #5 from Eric Gallager  ---
(In reply to Mark Harmstone from comment #4)
> (In reply to Andrew Pinski from comment #2)
> > The patches to support CodeView is being added (and improved) for GCC 15. I
> > am not sure how much will be finished by the release of GCC 15.
> 
> Support for C is very nearly finished. I hope to get all the C++ stuff
> (namespaces, templates, class member functions) done for GCC 15 too.

OK to put you as the assignee for this?

[Bug target/116021] Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread egallager at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

--- Comment #4 from Eric Gallager  ---
(In reply to Andreas Schwab from comment #3)
> You need to use an older Ada compiler (13 or older) for bootstrapping, not
> any of the broken intermediate versions between Aug 2023 and Jan 2024.

I wonder if maybe there could be a configure check added for whether the Ada
compiler is broken or not? Maybe one of the Ada maintainers could chime in?

[Bug debug/96635] Feature request: PDB/Codeview support

2024-07-21 Thread mark at harmstone dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96635

--- Comment #6 from Mark Harmstone  ---
(In reply to Eric Gallager from comment #5)
> OK to put you as the assignee for this?

Of course

[Bug target/116021] Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek  ---
Why?  The development versions isn't something meant for long time use, one
should be prepared to upgrade that to newer snapshots and/or upcoming stable
release.
There can be major bugs in those, ABI incompatibilities like this, ...

[Bug debug/96635] Feature request: PDB/Codeview support

2024-07-21 Thread egallager at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96635

Eric Gallager  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |mark at harmstone dot 
com
   Last reconfirmed||2024-07-22
 Ever confirmed|0   |1

[Bug target/116007] libquadmath fails to build with libgcc/soft-fp/quad.h:69:1: error: unable to emulate 'TF'

2024-07-21 Thread bugdal at aerifal dot cx via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116007

Rich Felker  changed:

   What|Removed |Added

 CC||bugdal at aerifal dot cx

--- Comment #10 from Rich Felker  ---
musl uses ld64 for all powerpc targets because the ABI was designed when
compiler support for IEEE quad was not widespread, with an intent of supporting
existing compilers rather than requiring recent ones.

Since presumably libquadmath builds fine on other targets where ld is not ieee
quad or IBM double-double, I'm assuming it must be target-specific code that's
failing. Could libquadmath just fallback to using generic arch-agnostic code on
targets (including musl) where ld is not one of the currently supported ones?

[Bug target/116021] Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |WONTFIX
 Status|UNCONFIRMED |RESOLVED

--- Comment #6 from Andrew Pinski  ---
This is a won't fix. Using an unreleased compiler before the ABI change to do a
bootstrap is not supported. There was a flag day in this case where it would
break. any before that date but after the day which added the option to use
heap based trampolines is not supported for bootstrap after that day. Only ones
without heap based trampolines and the ones with the supported ABI.

[no subject]

2024-07-21 Thread บางเวลา บางอารมณ์ via Gcc-bugs
สำหรับเจ้าของกิจการ ที่มี Project ต่อยอดเพิ่มกำไรให้ธุรกิจ
แต่ยังหาทุนทรัพย์ไม่ทัน
✔️เจ้าของธุรกิจที่มีการจดทะเบียน ใบประกอบกิจการ
✔️อนุมัติสูงสุด 5,000,000 บาท
✔️ไม่เช็คเครดิต บูโรเอกสารไม่ยุ่งยาก ไม่ต้องมีบุคคลค้ำประกัน
✔️อัตราดอกเบี้ยเริ่มต้น1.5%
✔️ตัดต้นลดดอกเบี้ยทันที
ถ้าท่านสนใจบริการของเรา โทรด่วนหาเรา
☎️ 0936782499 คุณตะวัน
☎️ 0825928519 คุณเอก
Line ID : esc.credit
(ให้เราเป็นส่วนหนึ่งในครอบครับท่านนะครับ)


[Bug target/108699] gcc.c-torture/execute/builtin-bitops-1.c fails on power 9 BE

2024-07-21 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108699

--- Comment #10 from GCC Commits  ---
The master branch has been updated by Kewen Lin :

https://gcc.gnu.org/g:913bab282d95e842907fec5a552a74ef64a6d4f6

commit r15-2190-g913bab282d95e842907fec5a552a74ef64a6d4f6
Author: Sam James 
Date:   Sun Jul 21 20:36:08 2024 -0500

testsuite: powerpc: fix dg-do run typo

'dg-run' is not a valid dejagnu directive, 'dg-do run' is needed here
for the test to be executed.

PR target/108699

gcc/testsuite/ChangeLog:

* gcc.target/powerpc/pr108699.c: Fix 'dg-run' typo.

Signed-off-by: Sam James 

[Bug target/116021] Ada build on Darwin: gen_il-main: Symbol not found: ___builtin_nested_func_ptr_created

2024-07-21 Thread egallager at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116021

--- Comment #7 from Eric Gallager  ---
Well ok, could someone send me a binary x86_64 build of GCC for darwin20 with
Ada support that they can bootstrap with successfully, then, so that I can get
back to bootstrapping, too? Either that, or send me the files that gen_il-main
generates...

[Bug rtl-optimization/116027] New: Redundant backup and restore of register with -flive-range-shrinkage

2024-07-21 Thread user202729 at protonmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116027

Bug ID: 116027
   Summary: Redundant backup and restore of register with
-flive-range-shrinkage
   Product: gcc
   Version: 15.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: user202729 at protonmail dot com
  Target Milestone: ---

Code:

__attribute__((pure)) long f(long a, long b);

long x;

long g(){
long y=x;
long z=f(0, 0);
return f(y, z);
}

long h(){
long z=f(0, 0);
long y=x;
return f(y, z);
}

Resulting assembly:

g():
pushrbx
xor esi, esi
xor edi, edi
callf(long, long)
mov rdi, QWORD PTR x[rip]
pop rbx
mov rsi, rax
jmp f(long, long)
h():
xor esi, esi
xor edi, edi
callf(long, long)
mov rdi, QWORD PTR x[rip]
mov rsi, rax
jmp f(long, long)

In function g, the push rbx/pop rbx pair is redundant.

Godbolt: https://godbolt.org/z/os4EYP916

Without -flive-range-shrinkage then both generates optimal code.

The reason for the suboptimal code can be partially traced to the following
code in gcc/ira.cc:

  /* Don't move insns if live range shrinkage or register
 pressure-sensitive scheduling were done because it will not
 improve allocation but likely worsen insn scheduling.  */
  if (optimize
  && !flag_live_range_shrinkage
  && !(flag_sched_pressure && flag_schedule_insns))
combine_and_move_insns ();

Without the flag specified, the load of x is moved to after the function call
(which is optimal).

With the flag specified, the move is not done in that pass (but it is optimized
in a subsequent pass anyway, that pass is probably after the pass that removes
redundant stack backup/restores).

[Bug target/115982] [15 Regression] ICE: unrecognizable insn in ira_remove_insn_scratches with -mavx512vl since r15-1742

2024-07-21 Thread liuhongt at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115982

Hongtao Liu  changed:

   What|Removed |Added

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

--- Comment #4 from Hongtao Liu  ---
I'll take a look

[Bug ipa/114531] Feature proposal for an `-finline-functions-aggressive` compiler option

2024-07-21 Thread rvmallad at amazon dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114531

--- Comment #21 from Rama Malladi  ---
Thank you Hubicka@ and rsandifo@ for reviewing this feature request and
supporting it. Could we go ahead and dispose this as accepted or rejected?
Accordingly action the PR
https://gcc.gnu.org/pipermail/gcc-patches/2024-June/655506.html? Thanks.

[Bug rtl-optimization/116027] Redundant backup and restore of register with -flive-range-shrinkage

2024-07-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116027

--- Comment #1 from Andrew Pinski  ---
-O2 -mpreferred-stack-boundary=3 -flive-range-shrinkage

[Bug fortran/106089] false positives with -Wuninitialized for allocation on assignment

2024-07-21 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106089

Paul Thomas  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
 CC||pault at gcc dot gnu.org

--- Comment #4 from Paul Thomas  ---
I am closing this PR, since it is fixed on mainline by pr108889 and will be
backported in due course.

Paul

[Bug fortran/77504] [12/13/14 Regression] "is used uninitialized" with allocatable string and array constructors

2024-07-21 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77504
Bug 77504 depends on bug 106089, which changed state.

Bug 106089 Summary: false positives with -Wuninitialized for allocation on 
assignment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106089

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

[Bug fortran/108889] [12/13/14 Regression] (Re)Allocate in assignment shows used uninitialized memory warning with -Wall if LHS is unallocated

2024-07-21 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108889
Bug 108889 depends on bug 106089, which changed state.

Bug 106089 Summary: false positives with -Wuninitialized for allocation on 
assignment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106089

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

[Bug middle-end/24639] [meta-bug] bug to track all Wuninitialized issues

2024-07-21 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
Bug 24639 depends on bug 106089, which changed state.

Bug 106089 Summary: false positives with -Wuninitialized for allocation on 
assignment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106089

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

[Bug fortran/77504] [12/13/14 Regression] "is used uninitialized" with allocatable string and array constructors

2024-07-21 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77504

--- Comment #35 from Paul Thomas  ---
Closing since it is fixed on mainline and the remedy will be backported in due
course by the fix for pr10889.

Paul

[Bug fortran/83209] [12/13/14/15 Regression] [Coarray] Failure of allocation of a coarray with a pointer component

2024-07-21 Thread vehre at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83209

Andre Vehreschild  changed:

   What|Removed |Added

 Resolution|--- |WORKSFORME
 Status|WAITING |RESOLVED

[Bug fortran/83700] [Meta-bug] Fortran Coarray issues

2024-07-21 Thread vehre at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83700
Bug 83700 depends on bug 83209, which changed state.

Bug 83209 Summary: [12/13/14/15 Regression] [Coarray] Failure of allocation of 
a coarray with a pointer component
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83209

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |WORKSFORME

[Bug rtl-optimization/116027] Redundant backup and restore of register with -flive-range-shrinkage

2024-07-21 Thread user202729 at protonmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116027

--- Comment #2 from user202729  ---
Maybe this is a less artificial example.

__attribute__((pure)) long f(__int128 a, long b);

__int128 x;

long g(){
__int128 y=x;
long z=f(0, 0);
x=1;
return f(y, z);
}

long h(){
long z=f(0, 0);
__int128 y=x;
x=1;
return f(y, z);
}


Compile with -O2.

Assembly:

g():
pushr14  // <-- redundant
xor edx, edx
xor edi, edi
xor esi, esi
pushrbx  // <-- redundant
sub rsp, 8
callf(__int128, long)
mov rdi, QWORD PTR x[rip]
mov rsi, QWORD PTR x[rip+8]
mov QWORD PTR x[rip], 1
mov QWORD PTR x[rip+8], 0
add rsp, 8
mov rdx, rax
pop rbx  // <-- redundant
pop r14  // <-- redundant
jmp f(__int128, long)
h():
sub rsp, 8
xor edx, edx
xor edi, edi
xor esi, esi
callf(__int128, long)
mov rdi, QWORD PTR x[rip]
mov rsi, QWORD PTR x[rip+8]
mov QWORD PTR x[rip], 1
mov QWORD PTR x[rip+8], 0
mov rdx, rax
add rsp, 8
jmp f(__int128, long)

Godbolt: https://godbolt.org/z/E1cnrEWzs

[Bug fortran/115997] Findloc does not find the result of a function with a deferred-length character return value

2024-07-21 Thread mscfd at gmx dot net via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115997

--- Comment #2 from martin  ---
Thanks for checking and looking up. I have not been able to use gfortran-14 due
to bug 114874 (a regression which has been resolved after release). Strangely,
the search box of bugzilla does not show relevant findloc issues, so I missed
bug 110288.