[Bug target/104688] gcc and libatomic can use SSE for 128-bit atomic loads on Intel and AMD CPUs with AVX

2022-11-13 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688

--- Comment #12 from Jakub Jelinek  ---
I've posted the patches (so far only lightly tested):
https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606021.html
https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606022.html
It is still Sunday in AoE, so we still have stage1 there.

[Bug other/107634] Very long filenames and URLs for sphinx-based docs

2022-11-13 Thread ebotcazou at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107634

--- Comment #10 from Eric Botcazou  ---
> About the number of files. Yes, that's the biggest change when it comes to
> Sphinx and I see it also as a drawback. However, it's the only valid file
> naming scheme supported by Sphinx and there are projects with non-trivial
> docs where the average size of a file matches to what we have:

The granularity is IMO problematic and will very likely not coax people into
updating the documentation (to say the least), which is counter-productive.

Why do we need to recursively split sections into sub-sections like this?

│   ├── extensions-to-the-c-language-family
│   │   ├── 128-bit-integers.rst
│   │   ├── additional-floating-types.rst
│   │   ├── alternate-keywords.rst
│   │   ├── an-inline-function-is-as-fast-as-a-macro.rst
│   │   ├── arithmetic-on-void-and-function-pointers.rst
│   │   ├── arrays-of-length-zero.rst
│   │   ├── arrays-of-variable-length.rst
│   │   ├── attribute-syntax.rst
│   │   ├── binary-constants-using-the-0b-prefix.rst
│   │   ├── built-in-functions-for-memory-model-aware-atomic-operations.rst
│   │   ├── built-in-functions-to-perform-arithmetic-with-overflow-checking.rst
│   │   ├── c++-style-comments.rst
│   │   ├── case-ranges.rst
│   │   ├── cast-to-a-union-type.rst
│   │   ├── complex-numbers.rst
│   │   ├── compound-literals.rst
│   │   ├── conditionals-with-omitted-operands.rst
│   │   ├── constructing-function-calls.rst
│   │   ├── decimal-floating-types.rst
│   │   ├── declaring-attributes-of-functions
│   │   │   ├── aarch64-function-attributes.rst
│   │   │   ├── amd-gcn-function-attributes.rst
│   │   │   ├── arc-function-attributes.rst
│   │   │   ├── arm-function-attributes.rst
│   │   │   ├── avr-function-attributes.rst
│   │   │   ├── blackfin-function-attributes.rst
│   │   │   ├── bpf-function-attributes.rst
│   │   │   ├── c-sky-function-attributes.rst
│   │   │   ├── common-function-attributes.rst
│   │   │   ├── epiphany-function-attributes.rst
│   │   │   ├── h8-300-function-attributes.rst
│   │   │   ├── ia-64-function-attributes.rst
│   │   │   ├── m32c-function-attributes.rst
│   │   │   ├── m32r-d-function-attributes.rst
│   │   │   ├── m68k-function-attributes.rst
│   │   │   ├── mcore-function-attributes.rst
│   │   │   ├── mep-function-attributes.rst
│   │   │   ├── microblaze-function-attributes.rst
│   │   │   ├── microsoft-windows-function-attributes.rst
│   │   │   ├── mips-function-attributes.rst
│   │   │   ├── msp430-function-attributes.rst
│   │   │   ├── nds32-function-attributes.rst
│   │   │   ├── nios-ii-function-attributes.rst
│   │   │   ├── nvidia-ptx-function-attributes.rst
│   │   │   ├── powerpc-function-attributes.rst
│   │   │   ├── risc-v-function-attributes.rst
│   │   │   ├── rl78-function-attributes.rst
│   │   │   ├── rx-function-attributes.rst
│   │   │   ├── s-390-function-attributes.rst
│   │   │   ├── sh-function-attributes.rst
│   │   │   ├── symbian-os-function-attributes.rst
│   │   │   ├── v850-function-attributes.rst
│   │   │   ├── visium-function-attributes.rst
│   │   │   ├── x86-function-attributes.rst
│   │   │   └── xstormy16-function-attributes.rst
│   │   ├── declaring-attributes-of-functions.rst
│   │   ├── designated-initializers.rst
│   │   ├── determining-the-alignment-of-functions-types-or-variables.rst
│   │   ├── dollar-signs-in-identifier-names.rst
│   │   ├── double-word-integers.rst
│   │   ├── enumerator-attributes.rst
│   │   ├── fixed-point-types.rst
│   │   ├── format-checks-specific-to-particular-target-machines.rst
│   │   ├── function-names-as-strings.rst
│   │   ├── getting-the-return-or-frame-address-of-a-function.rst
│   │   ├── half-precision-floating-point.rst
│   │   ├── hex-floats.rst
│   │   ├── how-to-use-inline-assembly-language-in-c-code.rst
│   │   ├── incomplete-enum-types.rst
│   │   ├── label-attributes.rst
│   │   ├── labels-as-values.rst
│   │   ├── legacy-sync-built-in-functions-for-atomic-memory-access.rst
│   │   ├── locally-declared-labels.rst
│   │   ├── macros-with-a-variable-number-of-arguments.rst
│   │   ├── mixed-declarations-labels-and-code.rst
│   │   ├── named-address-spaces.rst
│   │   ├── nested-functions.rst
│   │   ├── non-constant-initializers.rst
│   │   ├── non-lvalue-arrays-may-have-subscripts.rst
│   │   ├── nonlocal-gotos.rst
│   │   ├── object-size-checking-built-in-functions.rst
│   │   ├── other-built-in-functions-provided-by-gcc.rst
│   │   ├── pointer-arguments-in-variadic-functions.rst
│   │   ├── pointers-to-arrays-with-qualifiers-work-as-expected.rst
│   │   ├── pragmas-accepted-by-gcc.rst
│   │   ├── prototypes-and-old-style-function-definitions.rst
│   │   ├── referring-to-a-type-with-typeof.rst
│   │   ├── slightly-looser-rules-for-escaped-newlines.rst
│   │   ├── specifying-attributes-of-types.rst
│   │   ├── specifying-attributes-of-variables.rst
│   │   ├── statement-attributes.rst
│   │   ├── statements-and-declarations-in-expressions.rst
│   │   

[Bug tree-optimization/107672] New: [13 Regression] ICE during GIMPLE pass: slp

2022-11-13 Thread creatorsmithmdt at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107672

Bug ID: 107672
   Summary: [13 Regression] ICE during GIMPLE pass: slp
   Product: gcc
   Version: 13.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: creatorsmithmdt at gmail dot com
  Target Milestone: ---

The slp GIMPLE pass now ICE's on this code, which it did not previously. While
I am aware GCJ is not currently part of GCC, the GIMPLE it generates is valid
and should not be ICE'ing.

It does not ICE on O1.

This bug occurs on my msterstable branch.
(https://github.com/Zopolis4/gcj/commits/msterstable)

Given that GCJ is not currently part of GCC, and this bug is thus harder to
reproduce as one has to compile my fork, is there a better way for me to report
this? Maybe I could just send the generated GIMPLE that ICE's?

~/g/x/libjava> /bin/bash ./libtool  --tag=GCJ   --mode=compile
/home/zopolis4/gcjbuild/./gcc/gcj
-B/home/zopolis4/gcjbuild/x86_64-pc-linux-gnu/libjava/
 -B/home/zopolis4/gcjbuild/./gcc/ -B/usr/local/x86_64-pc-linux-gnu/bin/
-B/usr/local/x86_64-pc-linux-gnu/lib/ -isystem
/usr/local/x86_64-pc-linux-gnu/include -isystem /usr/
local/x86_64-pc-linux-gnu/sys-include-fomit-frame-pointer -Usun
-fclasspath=
-fbootclasspath=/home/zopolis4/gcjbuild/../gcj/libjava/classpath/lib
--encoding=UTF-8 -Wno-
deprecated -fbootstrap-classes -g -O2  -c -o gnu/java/security/hash.lo
-fsource-filename=/home/zopolis4/gcjbuild/x86_64-pc-linux-gnu/libjava/classpath/lib/classes
-MT gnu/j
ava/security/hash.lo -MD -MP -MF gnu/java/security/hash.deps
@gnu/java/security/hash.list
libtool: compile:  /home/zopolis4/gcjbuild/./gcc/gcj
-B/home/zopolis4/gcjbuild/x86_64-pc-linux-gnu/libjava/
-B/home/zopolis4/gcjbuild/./gcc/ -B/usr/local/x86_64-pc-linux-gnu/bin/
-B/usr/local/x86_64-pc-linux-gnu/lib/ -isystem
/usr/local/x86_64-pc-linux-gnu/include -isystem
/usr/local/x86_64-pc-linux-gnu/sys-include -fomit-frame-pointer -Usun
-fclasspath=
-fbootclasspath=/home/zopolis4/gcjbuild/../gcj/libjava/classpath/lib
--encoding=UTF-8 -Wno-deprecated -fbootstrap-classes -g -O2 -c
-fsource-filename=/home/zopolis4/gcjbuild/x86_64-pc-linux-gnu/libjava/classpath/lib/classes
-MT gnu/java/security/hash.lo -MD -MP -MF gnu/java/security/hash.deps
@gnu/java/security/hash.list  -fPIC -o gnu/java/security/.libs/hash.o
during GIMPLE pass: slp
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Whirlpool.java: In
class 'gnu.java.security.hash.Whirlpool':
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Whirlpool.java: In
method 'gnu.java.security.hash.Whirlpool.transform(byte[],int)':
In file included from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Tiger.java:863,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Sha512.java:277,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Sha384.java:275,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Sha256.java:248,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Sha160.java:239,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/RipeMD160.java:289,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/RipeMD128.java:255,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/MD5.java:369,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/MD4.java:336,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/MD2.java:255,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/IMessageDigest.java:31,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Haval.java:805,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/HashFactory.java:1764,
 from
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/BaseHash.java:437,
 from :575:
/home/zopolis4/gcj/libjava/classpath/gnu/java/security/hash/Whirlpool.java:299:
internal compiler error: Segmentation fault
  299 | n0 = (in[offset++] & 0xFFL) << 56
  |
0xdac2af crash_signal
/home/zopolis4/gcjbuild/../gcj/gcc/toplev.cc:314
0x1d10ee7 supportable_widening_operation(vec_info*, tree_code, _stmt_vec_info*,
tree_node*, tree_node*, tree_code*, tree_code*, int*, vec*)
/home/zopolis4/gcjbuild/../gcj/gcc/tree-vect-stmts.cc:12196
0x1d3094c vectorizable_conversion
/home/zopolis4/gcjbuild/../gcj/gcc/tree-vect-stmts.cc:5064
0x1d31a18 vect_analyze_stmt(vec_info*, _stmt_vec_info*, bool*, _slp_tree*,
_slp_instance*, vec*)
/home/zopolis4/gcjbuild/../gcj/gcc/tree-vect-stmts.cc:11247
0x106344e vect_slp_analyze_node_operations_1

[Bug analyzer/106854] [[gnu::malloc(deallocator)]] for non-pointer functions (e.g., fd)

2022-11-13 Thread sam at gentoo dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106854

Sam James  changed:

   What|Removed |Added

 CC||ericb at gcc dot gnu.org

--- Comment #8 from Sam James  ---
Something similarish came up with gnutls recently:
https://gitlab.com/gnutls/gnutls/-/merge_requests/1652#note_1138078435.

[Bug fortran/107669] [13 Regression] commit r13-3931-59a63247992eb13153b82c4902aadf111460eac2 causes lots of testcase failure

2022-11-13 Thread seurer at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107669

seurer at gcc dot gnu.org changed:

   What|Removed |Added

 CC||seurer at gcc dot gnu.org

--- Comment #1 from seurer at gcc dot gnu.org ---
I am seeing this on powerpc64, too.

FAIL: libgomp.fortran/is_device_ptr-2.f90   -O  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/is_device_ptr-2.f90   -O  (test for excess errors)
FAIL: libgomp.fortran/optional-map.f90   -O0  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/optional-map.f90   -O0  (test for excess errors)
FAIL: libgomp.fortran/optional-map.f90   -O1  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/optional-map.f90   -O1  (test for excess errors)
FAIL: libgomp.fortran/optional-map.f90   -O2  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/optional-map.f90   -O2  (test for excess errors)
FAIL: libgomp.fortran/optional-map.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (internal compiler
error: in gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/optional-map.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
FAIL: libgomp.fortran/optional-map.f90   -O3 -g  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/optional-map.f90   -O3 -g  (test for excess errors)
FAIL: libgomp.fortran/optional-map.f90   -Os  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/optional-map.f90   -Os  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O0  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O0  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O1  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O1  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O2  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O2  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (internal compiler
error: in gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O3 -g  (internal compiler error:
in gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-1.f90   -O3 -g  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-1.f90   -Os  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-1.f90   -Os  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O0  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O0  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O1  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O1  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O2  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O2  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (internal compiler
error: in gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O3 -fomit-frame-pointer
-funroll-loops -fpeel-loops -ftracer -finline-functions  (test for excess
errors)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O3 -g  (internal compiler error:
in gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-2.f90   -O3 -g  (test for excess errors)
FAIL: libgomp.fortran/use_device_addr-2.f90   -Os  (internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137)
FAIL: libgomp.fortran/use_device_addr-2.f90   -Os  (test for excess errors)

[Bug target/104688] gcc and libatomic can use SSE for 128-bit atomic loads on Intel and AMD CPUs with AVX

2022-11-13 Thread xry111 at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688

Xi Ruoyao  changed:

   What|Removed |Added

Summary|gcc and libatomic can use   |gcc and libatomic can use
   |SSE for 128-bit atomic  |SSE for 128-bit atomic
   |loads on Intel CPUs with|loads on Intel and AMD CPUs
   |AVX |with AVX
 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2022-11-14

[Bug target/104688] gcc and libatomic can use SSE for 128-bit atomic loads on Intel CPUs with AVX

2022-11-13 Thread sam at gentoo dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688

--- Comment #11 from Sam James  ---
(In reply to GGanesh from comment #10)
> Can we extend this patch to AMD processors as well. If not, I will plan to
> submit the patch for stage-1!

GCC 13 (as of today) is in stage 3 - see https://gcc.gnu.org/develop.html, but
it may or may not still be possible to submit it (not my call).

[Bug c++/95349] Using std::launder(p) produces unexpected behavior where (p) produces expected behavior

2022-11-13 Thread andrew2085 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95349

--- Comment #44 from Andrew Downing  ---
(In reply to Richard Biener from comment #43)
> (In reply to Andrew Downing from comment #41)
> > > Thus for types without a non-trivial ctor/dtor you do not need to use
> > > placement new.  So take your example and remove the placement new.
> > > Does that change its semantics?
> > 
> > These are C++17 rules.
> > 
> > 4.5/1) An object is created by a definition, by a new-expression, when
> > implicitly changing the active member of a union, or when a temporary object
> > is created.
> > 
> > 6.8/1) The lifetime of an object of type T begins when: storage with the
> > proper alignment and size for type T is obtained, and if the object has
> > non-vacuous initialization, its initialization is complete.
> > 
> > double d;
> > 
> > My interpretation of the above rules would be that only a double object is
> > created in the storage for d because T in 6.8/1 is set to double by the
> > definition of d. According to these rules the only way to change the dynamic
> > type of the object in d's storage would be with placement new (pre C++20).
> > memcpy only overwrites the object representation. It doesn't affect it's
> > type or lifetime.
> 
> What would
> 
>   *(long *) = 1;
> 
> do?  My reading of earlier standards say it starts lifetime of a new object
> of type long (the storage of 'd' gets reused).  Following that stmt a read
> like
> 
>   foo (d);
> 
> invokes undefined behavior (it accesses the storage of effective type long
> via an effective type of double).  The same example with placement new
> would be
> 
>   *(new () long) = 1;
> 
> and I'm arguing the placement new is not required to start the lifetime
> of an object of type long in the storage of 'd'.

It's been a while since I've though about this stuff.

double d;
*(long *) = 1;

That would be lead to undefined behavior because it's breaking the strict
aliasing rules.

*(new () long) = 1;

That would be ok because new creates a long object in the storage of d before
dereferencing.

[Bug libstdc++/105611] std::shift_left/right should not use ranges::next

2022-11-13 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105611

Patrick Palka  changed:

   What|Removed |Added

 CC||ppalka at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |ppalka at gcc dot 
gnu.org
 Ever confirmed|0   |1
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2022-11-14

[Bug target/107671] i386: Missed optimization: use of bt in bit test pattern (using -O2 -mtune=core2)

2022-11-13 Thread ibuclaw at gdcproject dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107671

--- Comment #2 from Iain Buclaw  ---
Expected generated code would be:
---
bt32_setb*:
  ...
  shrl$5, %edx
  movl(%eax,%edx,4), %edx
  xorl%eax, %eax
  btl %ecx, %edx
  setb%al
  ...
---
bt32_setae*:
  ...
  shrl$5, %edx
  movl(%eax,%edx,4), %edx
  xorl%eax, %eax
  btl %ecx, %edx
  setae   %al
  ...
---
bt32v_setb*:
  ...
  xorl%eax, %eax
  btl %esi, %edi
  setb%al
  ...
---
bt32v_setae*:
  ...
  xorl%eax, %eax
  btl %esi, %edi
  setae   %al
  ...
---
bt64_setb*:
  ...
  shrq$6, %rax
  movq(%rdi,%rax,8), %rcx
  xorl%eax, %eax
  btq %rsi, %rcx 
  setb%al
  ...
---
bt64_setae*:
  ...
  shrq$6, %rax
  movq(%rdi,%rax,8), %rcx
  xorl%eax, %eax
  btq %rsi, %rcx 
  setae   %al
  ...
---
bt64v_setb*:
  ...
  xorl%eax, %eax
  btq %rsi, %rdi
  setb%al
  ...
---
bt64v_setae*:
  ...
  xorl%eax, %eax
  btq %rsi, %rdi
  setae   %al
  ...

[Bug target/107671] i386: Missed optimization: use of bt in bit test pattern (using -O2 -mtune=core2)

2022-11-13 Thread ibuclaw at gdcproject dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107671

--- Comment #1 from Iain Buclaw  ---
Non-pointer variants also not detected.
---
int bt32v_setb(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum)
{
return ((v & (1  << (bitnum & 31 != 0;
}

int bt64v_setb(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum)
{
return ((v & (1L << (bitnum & 63 != 0;
}

int bt32v_setb2(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum)
{
return (v >> (bitnum & 31)) & 1;
}

int bt64v_setb2(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum)
{
return (v >> (bitnum & 63)) & 1;
}

int bt32v_setae(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum)
{
return ((v & (1  << (bitnum & 31 == 0;
}

int bt64v_setae(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum)
{
return ((v & (1L << (bitnum & 63 == 0;
}

int bt32v_setae2(const __UINT32_TYPE__ v, __UINT32_TYPE__ bitnum)
{
return !((v >> (bitnum & 31)) & 1);
}

int bt64v_setae2(const __UINT64_TYPE__ v, __UINT64_TYPE__ bitnum)
{
return !((v >> (bitnum & 63)) & 1);
}

[Bug target/107671] New: i386: Missed optimization: use of bt in bit test pattern when LHS is an array index

2022-11-13 Thread ibuclaw at gdcproject dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107671

Bug ID: 107671
   Summary: i386: Missed optimization: use of bt in bit test
pattern when LHS is an array index
   Product: gcc
   Version: 13.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ibuclaw at gdcproject dot org
  Target Milestone: ---

int bt32_setb(const __UINT32_TYPE__ *p, __UINT32_TYPE__ bitnum)
{
return ((p[bitnum >> 5] & (1  << (bitnum & 31 != 0;
}

int bt64_setb(const __UINT64_TYPE__ *p, __UINT64_TYPE__ bitnum)
{
return ((p[bitnum >> 6] & (1L << (bitnum & 63 != 0;
}

int bt32_setb2(const __UINT32_TYPE__ *p, __UINT32_TYPE__ bitnum)
{
return (p[bitnum >> 5] >> (bitnum & 31)) & 1;
}

int bt64_setb2(const __UINT64_TYPE__ *p, __UINT64_TYPE__ bitnum)
{
return (p[bitnum >> 6] >> (bitnum & 63)) & 1;
}

int bt32_setae(const __UINT32_TYPE__ *p, __UINT32_TYPE__ bitnum)
{
return ((p[bitnum >> 5] & (1  << (bitnum & 31 == 0;
}

int bt64_setae(const __UINT64_TYPE__ *p, __UINT64_TYPE__ bitnum)
{
return ((p[bitnum >> 6] & (1L << (bitnum & 63 == 0;
}

int bt32_setae2(const __UINT32_TYPE__ *p, __UINT32_TYPE__ bitnum)
{
return !((p[bitnum >> 5] >> (bitnum & 31)) & 1);
}

int bt64_setae2(const __UINT64_TYPE__ *p, __UINT64_TYPE__ bitnum)
{
return !((p[bitnum >> 6] >> (bitnum & 63)) & 1);
}

[Bug target/104688] gcc and libatomic can use SSE for 128-bit atomic loads on Intel CPUs with AVX

2022-11-13 Thread Ganesh.Gopalasubramanian at amd dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688

GGanesh  changed:

   What|Removed |Added

 CC||Ganesh.Gopalasubramanian@am
   ||d.com

--- Comment #10 from GGanesh  ---
Apologies for late response!

We would update the AMD APM manuals in the next revision.

For all AMD architectures,

Processors that support AVX extend the atomicity for cacheable,
naturally-aligned single loads or stores from a quadword to a double quadword.

which means all 128b instructions, even the *MOVDQU instructions, are atomic if
they end up being naturally aligned.

Can we extend this patch to AMD processors as well. If not, I will plan to
submit the patch for stage-1!

[Bug ipa/107670] New: Suspicious redundant code in ipa-cp

2022-11-13 Thread fxue at os dot amperecomputing.com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107670

Bug ID: 107670
   Summary: Suspicious redundant code in ipa-cp
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: fxue at os dot amperecomputing.com
CC: marxin at gcc dot gnu.org
  Target Milestone: ---

Function "ipa_prop_read_jump_functions()" in ipa-prop.c:

  ipa_check_create_node_params ();
  ipa_check_create_edge_args ();

These two are also called inside the immediately following statement:

  ipa_register_cgraph_hooks();



Function "ipa_fn_summary_read()" in ipa-fnsummary.cc:

  ipa-cp's hooks will be registered twice in this function. One is indirectly
done by ipa_prop_read_jump_functions(), and the other is by a nearby call to
ipa_register_cgraph_hooks.

[Bug fortran/107669] New: [13 Regression] commit r13-3931-59a63247992eb13153b82c4902aadf111460eac2 causes lots of testcase failure

2022-11-13 Thread haochen.jiang at intel dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107669

Bug ID: 107669
   Summary: [13 Regression] commit
r13-3931-59a63247992eb13153b82c4902aadf111460eac2
causes lots of testcase failure
   Product: gcc
   Version: 13.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: haochen.jiang at intel dot com
  Target Milestone: ---

After commit r13-3931-59a63247992eb13153b82c4902aadf111460eac2, we got lots of
failure in the following libgomp.fortran testcases.

libgomp.fortran/is_device_ptr-2.f90
libgomp.fortran/optional-map.f90
libgomp.fortran/use_device_addr-1.f90
libgomp.fortran/use_device_addr-2.f90
libgomp.fortran/use_device_ptr-optional-2.f90
libgomp.fortran/use_device_ptr-optional-3.f90
libgomp.oacc-fortran/optional-data-copyin-by-value.f90

They all got ICE like this: internal compiler error: in
gfc_omp_check_optional_argument, at fortran/trans-openmp.cc:137.

You might also get an email sent by my script later.

[Bug analyzer/106235] RFE: -fanalyzer could complain about tainted data triggering assertion failure

2022-11-13 Thread dmalcolm at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106235

David Malcolm  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from David Malcolm  ---
Implemented for GCC 13 by the above patch.

[Bug analyzer/106235] RFE: -fanalyzer could complain about tainted data triggering assertion failure

2022-11-13 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106235

--- Comment #3 from CVS Commits  ---
The master branch has been updated by David Malcolm :

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

commit r13-3947-gd777b38cde91a87f2345dcd13901862a9513562a
Author: David Malcolm 
Date:   Sun Nov 13 17:53:23 2022 -0500

analyzer: new warning: -Wanalyzer-tainted-assertion [PR106235]

This patch adds a new -Wanalyzer-tainted-assertion warning to
-fanalyzer's "taint" mode (which also requires -fanalyzer-checker=taint).

It complains about attacker-controlled values being used in assertions,
or in any expression affecting control flow that guards a "noreturn"
function.  As noted in the docs part of the patch, in such cases:

  - when assertion-checking is enabled: an attacker could trigger
a denial of service by injecting an assertion failure

  - when assertion-checking is disabled, such as by defining NDEBUG,
an attacker could inject data that subverts the process, since it
presumably violates a precondition that is being assumed by the code.

For example, given:

#include 

int __attribute__((tainted_args))
test_tainted_assert (int n)
{
  assert (n > 0);
  return n * n;
}

compiling with
  -fanalyzer -fanalyzer-checker=taint
gives:

t.c: In function 'test_tainted_assert':
t.c:6:3: warning: use of attacked-controlled value in condition for
assertion [CWE-617] [-Wanalyzer-tainted-assertion]
6 |   assert (n > 0);
  |   ^~
  'test_tainted_assert': event 1
|
|4 | test_tainted_assert (int n)
|  | ^~~
|  | |
|  | (1) function 'test_tainted_assert' marked with
'__attribute__((tainted_args))'
|
+--> 'test_tainted_assert': event 2
   |
   |4 | test_tainted_assert (int n)
   |  | ^~~
   |  | |
   |  | (2) entry to 'test_tainted_assert'
   |
 'test_tainted_assert': events 3-6
   |
   |/usr/include/assert.h:106:10:
   |  106 |   if (expr)
\
   |  |  ^
   |  |  |
   |  |  (3) use of attacker-controlled value for
control flow
   |  |  (4) following 'false' branch (when 'n <=
0')...
   |..
   |  109 | __assert_fail (#expr, __FILE__, __LINE__,
__ASSERT_FUNCTION);   \
   |  | ~
   |  | |
   |  | (5) ...to here
   |  | (6) treating '__assert_fail' as an assertion
failure handler due to '__attribute__((__noreturn__))'
   |

The testcases have various examples for BUG and BUG_ON from the
Linux kernel; there, the diagnostic treats "panic" as an assertion
failure handler, due to '__attribute__((__noreturn__))'.

gcc/analyzer/ChangeLog:
PR analyzer/106235
* analyzer.opt (Wanalyzer-tainted-assertion): New.
* checker-path.cc (checker_path::fixup_locations): Pass false to
pending_diagnostic::fixup_location.
* diagnostic-manager.cc (get_emission_location): Pass true to
pending_diagnostic::fixup_location.
* pending-diagnostic.cc (pending_diagnostic::fixup_location): Add
bool param.
* pending-diagnostic.h (pending_diagnostic::fixup_location): Add
bool param to decl.
* sm-taint.cc (taint_state_machine::m_tainted_control_flow): New.
(taint_diagnostic::describe_state_change): Drop "final".
(class tainted_assertion): New.
(taint_state_machine::taint_state_machine): Initialize
m_tainted_control_flow.
(taint_state_machine::alt_get_inherited_state): Support
comparisons being tainted, based on their arguments.
(is_assertion_failure_handler_p): New.
(taint_state_machine::on_stmt): Complain about calls to assertion
failure handlers guarded by an attacker-controller conditional.
Detect attacker-controlled gcond conditionals and gswitch index
values.
(taint_state_machine::check_control_flow_arg_for_taint): New.

gcc/ChangeLog:
PR analyzer/106235
* doc/gcc/gcc-command-options/option-summary.rst: Add
-Wno-analyzer-tainted-assertion.
*
doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
Add -Wno-analyzer-tainted-assertion.

gcc/testsuite/ChangeLog:
PR analyzer/106235
* gcc.dg/analyzer/taint-assert-BUG_ON.c: New test.
* gcc.dg/analyzer/taint-assert-macro-expansion.c: 

[Bug libstdc++/104167] Implement C++20 std::chrono::utc_clock, std::chrono::tzdb etc.

2022-11-13 Thread redi at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104167

--- Comment #2 from Jonathan Wakely  ---
Patch for time zones and incomplete formatting support:
https://gcc.gnu.org/pipermail/gcc-patches/2022-November/605926.html

[Bug tree-optimization/107668] [13 Regression] ICE: in clear_nan, at value-range.h:1167 with -fsanitize=float-cast-overflow and _Complex int

2022-11-13 Thread dcb314 at hotmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107668

--- Comment #2 from David Binderman  ---
Reduced C++ code seems to be:

--- /home/dcb36/cvise/bug862.cc ---
float dot();
float intersectcylinder_md;
void intersectcylinder(float ) {
  float nd = dot();
  dist = 0 / nd;
  float offset = intersectcylinder_md + dist;
  if (offset < 0)
dist = nd;
}

[Bug tree-optimization/107668] [13 Regression] ICE: in clear_nan, at value-range.h:1167 with -fsanitize=float-cast-overflow and _Complex int

2022-11-13 Thread dcb314 at hotmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107668

David Binderman  changed:

   What|Removed |Added

 CC||dcb314 at hotmail dot com

--- Comment #1 from David Binderman  ---
I see this also in C++ code with flags -O1 -march=znver3 -ffast-math.

The problem first seems to occur sometime between git hash 52672be7d328df50
and 05432288d4e56055, some 28 commits later.

I have a cvise job running.

[Bug analyzer/106235] RFE: -fanalyzer could complain about tainted data triggering assertion failure

2022-11-13 Thread dmalcolm at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106235

David Malcolm  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2022-11-13
 Ever confirmed|0   |1

--- Comment #2 from David Malcolm  ---
Testing a patch for this...

[Bug fortran/94104] Request for diagnostic improvement

2022-11-13 Thread anlauf at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94104

anlauf at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |13.0

--- Comment #6 from anlauf at gcc dot gnu.org ---
Fixed for gcc-13.  Closing.

Thanks for the patch!

[Bug libstdc++/107660] Running binaries compiled with g++11 or later produces different results than g++ version 10 or earlier

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107660

--- Comment #5 from Andrew Pinski  ---
(In reply to Andrew Pinski from comment #4)
> std::mt19937

r11-4535-g822c1d21a3c710

Hmm, this might be expected 

[Bug fortran/94104] Request for diagnostic improvement

2022-11-13 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94104

--- Comment #5 from CVS Commits  ---
The master branch has been updated by Harald Anlauf :

https://gcc.gnu.org/g:58e7732a2feddf475e72b232bf16494d84a41acf

commit r13-3946-g58e7732a2feddf475e72b232bf16494d84a41acf
Author: José Rui Faustino de Sousa 
Date:   Wed Nov 9 21:30:25 2022 +0100

Fortran: diagnostics for actual arguments to pointer dummy arguments
[PR94104]

Error message improvement.  In Fortran 2008 actual procedure arguments
associated with a pointer, intent(in) attribute, dummy argument
can also have the target attribute, not just pointer.

gcc/fortran/ChangeLog:

PR fortran/94104
* interface.cc (gfc_compare_actual_formal): Improve error message
dependent on Fortran standard level.

gcc/testsuite/ChangeLog:

PR fortran/94104
* gfortran.dg/parens_2.f90: Adjust to improved error message.
* gfortran.dg/PR94104a.f90: New test.
* gfortran.dg/PR94104b.f90: New test.

[Bug c++/107660] Running binaries compiled with g++11 or later produces different results than g++ version 10 or earlier

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107660

--- Comment #4 from Andrew Pinski  ---
std::mt19937

[Bug c++/97052] Internal compiler error with substitution failure in template parameter list of concept declaration

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97052

Andrew Pinski  changed:

   What|Removed |Added

 CC||wjwray at gmail dot com

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

[Bug c++/107662] [10 concepts] ICE using concept with dependent template parameter to define variable

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107662

Andrew Pinski  changed:

   What|Removed |Added

  Known to fail||9.5.0
 Resolution|--- |DUPLICATE
 Status|UNCONFIRMED |RESOLVED

--- Comment #2 from Andrew Pinski  ---
Dup of bug 97052.

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

[Bug c++/107662] [10 concepts] ICE using concept with dependent template parameter to define variable

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107662

--- Comment #1 from Andrew Pinski  ---
Created attachment 53894
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53894=edit
testcase

Next time please paste the testcase instead of just a link to godbolt .

[Bug web/107650] Sphinx generated web pages don't have "up" (to the section TOC)

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107650

--- Comment #4 from Andrew Pinski  ---
(In reply to Martin Liška from comment #3)
> (In reply to Andrew Pinski from comment #0)
> > The texinfo generated HTML has an up link which links to the section that
> > the page is linked from.
> > While the Sphinx generated HTML does not.
> > An example for texinfo is
> > https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/eBPF-Options.html#eBPF-Options
> > compared to
> > https://gcc.gnu.org/onlinedocs/gcc/gcc-command-options/machine-dependent-
> > options/ebpf-options.html .
> > 
> > Is there a way to get this feature back? as it is useful when browsing the
> > manual.
> 
> No, I don't think it was useful as one was missing complete navigation that
> is right now on the left.

Except the navigation does not fully replace the up button.
An example is if you scroll down on the top level TOC down to the "Nios II
Options" (not on the navigation on the left) and click it. The navigation on
the left does not scroll down to the same location. Making it harder to figure
out where you are.

> 
> > 
> > The other thing that would be a nice feature back is having next/previous/up
> > links at the start also and not just at the end of the page.
> > 
> > The order of previous and next on the bottom of the page is ok even though
> > it is swapped from what it was previously.
> 
> The layout is better in Sphinx as it corresponds to expect layout (similarly
> to web browsers).

So that is broken. Having it on the top and the bottom is still useful. Maybe
you clicked the wrong link but it was the next one you either have to use the
left/right links at the buttom or you have to understand the left/right curser
keys are bound to previous/next page. Again still confusing. Most web UI
designers have ignored UI design for years how humans work and just make broken
things we should not repeat the same mistakes.

[Bug middle-end/107656] post sphinx conversion, can't tell between a target macro or a target hook

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107656

--- Comment #3 from Andrew Pinski  ---
(In reply to Martin Liška from comment #2)
> Yes, it's a small drawback.

IT IS NOT A SMALL DRAWBACK. It is a huge one really. Especially when a new
developer is trying to write a backend, they can't figure out if it was a
target hook or a target macro one is. The return type is only part is not
described anywhere to say it is the difference either. Epsecially when reading
each of these sections seperately.

I only noticed this because I am going to try to improve the documentation on
some of these and this caught my eye and made me even more confused (I looked
at the new documentation first and I was wait isn't one a target hook and then
I had to go look at the previous texinfo documentation to see that was true).

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #12 from Andrew Pinski  ---
Created attachment 53893
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53893=edit
Screen shot of the index

When I see a row like these rows, I think __builtin_mips_any_cabs_cond_ps (C++
function) is related to _Complex keyword but they are 100% not related at all.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #11 from Andrew Pinski  ---
(In reply to Martin Liška from comment #10)
> > But the sphinx generated index is not very useful as it lists all options
> > under symbols heading which is very confusing to programmers.
> 
> It's a minor limitation, one can still jump to individual listings of
> options:
> https://gcc.gnu.org/onlinedocs/gcc/gcc-command-options.html

That is a TOC and NOT an index.
IT IS NOT A MINOR LIMITATION.
Compare this to the texinfo generated one:
https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Option-Index.html

(yes the f and m is still combined)
But the - is ignored.
Plus the layout of the index is better.
The two parrallel columns of the sphinx generated index is also bad because the
order is first column then the second which means scrolling back up for the
wrapping. IS there a way to fix that?

Plus when I saw symbol I was thinking function/variable name and not -,&,etc.
The texinfo generated index splits out the symbols even which seems like sphinx
should be able to do too which will improve the look slightly.

Searching is not just about knowing keywords but looking into similar named
things which is another reason why the two column for the generated index is
bad idea.

[Bug tree-optimization/107668] New: [13 Regression] ICE: in clear_nan, at value-range.h:1167 with -fsanitize=float-cast-overflow and _Complex int

2022-11-13 Thread zsojka at seznam dot cz via Gcc-bugs
loat.cc:1904
0x2568f53 float_binary_op_range_finish
/repo/gcc-trunk/gcc/range-op-float.cc:1886
0x2568f53 foperator_mult::op1_range(frange&, tree_node*, frange const&, frange
const&, relation_trio) const
/repo/gcc-trunk/gcc/range-op-float.cc:2143
0x24414d7 gori_compute::compute_operand1_range(vrange&,
gimple_range_op_handler&, vrange const&, tree_node*, fur_source&,
value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:1095
0x2440193 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:692
0x2441e2f gori_compute::compute_operand2_range(vrange&,
gimple_range_op_handler&, vrange const&, tree_node*, fur_source&,
value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:1243
0x24408ca gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:694
0x2441e2f gori_compute::compute_operand2_range(vrange&,
gimple_range_op_handler&, vrange const&, tree_node*, fur_source&,
value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:1243
0x24423b2 gori_compute::compute_operand1_and_operand2_range(vrange&,
gimple_range_op_handler&, vrange const&, tree_node*, fur_source&,
value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:1263
0x2440ac0 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:689
0x2441553 gori_compute::compute_operand1_range(vrange&,
gimple_range_op_handler&, vrange const&, tree_node*, fur_source&,
value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:1150
0x2440193 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:692
0x243fe91 gori_compute::compute_logical_operands(vrange&, vrange&,
gimple_range_op_handler&, irange const&, tree_node*, fur_source&, tree_node*,
bool)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:935
0x2440750 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:674
0x2441553 gori_compute::compute_operand1_range(vrange&,
gimple_range_op_handler&, vrange const&, tree_node*, fur_source&,
value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:1150
0x2440193 gori_compute::compute_operand_range(vrange&, gimple*, vrange const&,
tree_node*, fur_source&, value_relation*)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:692
0x2443ee2 gori_compute::outgoing_edge_range_p(vrange&, edge_def*, tree_node*,
range_query&)
/repo/gcc-trunk/gcc/gimple-range-gori.cc:1373
0x2434dee ranger_cache::edge_range(vrange&, edge_def*, tree_node*,
ranger_cache::rfd_mode)
/repo/gcc-trunk/gcc/gimple-range-cache.cc:964
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See https://gcc.gnu.org/bugs/ for instructions.


$ x86_64-pc-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/repo/gcc-trunk/binary-latest-amd64/bin/x86_64-pc-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/repo/gcc-trunk/binary-trunk-r13-3944-20221113164720-g43435c7eb0f-checking-yes-rtl-df-extra-nobootstrap-amd64/bin/../libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /repo/gcc-trunk//configure --enable-languages=c,c++
--enable-valgrind-annotations --disable-nls --enable-checking=yes,rtl,df,extra
--disable-bootstrap --with-cloog --with-ppl --with-isl
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu
--target=x86_64-pc-linux-gnu --with-ld=/usr/bin/x86_64-pc-linux-gnu-ld
--with-as=/usr/bin/x86_64-pc-linux-gnu-as --disable-libstdcxx-pch
--prefix=/repo/gcc-trunk//binary-trunk-r13-3944-20221113164720-g43435c7eb0f-checking-yes-rtl-df-extra-nobootstrap-amd64
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.0.0 20221113 (experimental) (GCC)

[Bug web/107650] Sphinx generated web pages don't have "up" (to the section TOC)

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107650

Martin Liška  changed:

   What|Removed |Added

 CC||marxin at gcc dot gnu.org

--- Comment #3 from Martin Liška  ---
(In reply to Andrew Pinski from comment #0)
> The texinfo generated HTML has an up link which links to the section that
> the page is linked from.
> While the Sphinx generated HTML does not.
> An example for texinfo is
> https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/eBPF-Options.html#eBPF-Options
> compared to
> https://gcc.gnu.org/onlinedocs/gcc/gcc-command-options/machine-dependent-
> options/ebpf-options.html .
> 
> Is there a way to get this feature back? as it is useful when browsing the
> manual.

No, I don't think it was useful as one was missing complete navigation that is
right now on the left.

> 
> The other thing that would be a nice feature back is having next/previous/up
> links at the start also and not just at the end of the page.
> 
> The order of previous and next on the bottom of the page is ok even though
> it is swapped from what it was previously.

The layout is better in Sphinx as it corresponds to expect layout (similarly to
web browsers).

[Bug middle-end/107656] post sphinx conversion, can't tell between a target macro or a target hook

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107656

Martin Liška  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |NEW
 CC||marxin at gcc dot gnu.org
   Last reconfirmed||2022-11-13

--- Comment #2 from Martin Liška  ---
Yes, it's a small drawback. One can distinguish macros by missing return type,
but I can imagine adding a

.. note::

  Target macro

for such macros that have arguments. These w/o arguments are hopefully
distinguishable from hooks.

[Bug c/107653] how-to-use-inline-assembly-language-in-c-code page is huge and should be split up

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107653

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1
   Last reconfirmed||2022-11-13
   Assignee|unassigned at gcc dot gnu.org  |marxin at gcc dot 
gnu.org
 CC||marxin at gcc dot gnu.org

--- Comment #3 from Martin Liška  ---
Confirmed, the shared doc/md.rst file is shared in between gcc and gccint
manual, where md.rst contains many '  .. only:: gccint' directives.

But yes, we should split it a bit.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #10 from Martin Liška  ---
> But the sphinx generated index is not very useful as it lists all options
> under symbols heading which is very confusing to programmers.

It's a minor limitation, one can still jump to individual listings of options:
https://gcc.gnu.org/onlinedocs/gcc/gcc-command-options.html

Plus, there's a built-in search capability that can point you to an option if
you know the name.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #9 from Andrew Pinski  ---
(In reply to Martin Liška from comment #8)
> You can quickly find 'vectorize' option in the sphinx version of the Index.

But the sphinx generated index is not very useful as it lists all options under
symbols heading which is very confusing to programmers.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

Martin Liška  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

--- Comment #14 from Martin Liška  ---
Ok, so it's possible with a small workaround:
https://stackoverflow.com/questions/36235578/how-can-i-include-the-genindex-in-a-sphinx-toc

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

--- Comment #13 from Andrew Pinski  ---
(In reply to Martin Liška from comment #12)
> (In reply to Andrew Pinski from comment #11)
> > (In reply to CVS Commits from comment #8)
> > 
> > > It is confusing that 'Indexes and tables' contains TODO. One gets
> > > Index by clicking to the Index link.
> > 
> > I don't see an Index link. There is no link to the top TOC anywhere either.
> 
> Can you see the mouse pointer on the screenshot? It points to a hyperlink
> called Index. What's still missing?

It is so little compared to anything else on the screen, it can't be seen. And
why not a direct link from the TOC?

[Bug other/107634] Very long filenames and URLs for sphinx-based docs

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107634

--- Comment #9 from Andrew Pinski  ---
(In reply to Martin Liška from comment #7)


> c-behavior/architecture.rst
> c-behavior/arrays-and-pointers.rst
> c-behavior/characters.rst
> c-behavior/declarators.rst
> c-behavior/environment.rst
> c-behavior/floating-point.rst
> c-behavior/hints.rst
> c-behavior/identifiers.rst
> c-behavior/integers.rst
> c-behavior/library-functions.rst
> c-behavior/locale-specific-behavior.rst
> c-behavior/preprocessing-directives.rst
> c-behavior/qualifiers.rst
> c-behavior/statements.rst
> c-behavior/compount-types.rst
> c-behavior/translation.rst

Is there a way to get C implementation defined behavior in one source file
which gets split up is better? That would make it easier to modify and no need
for the longer file names there.


> ./c++-implementation-defined-behavior.rst
> ./conditionally-supported-behavior.rst
> ./exception-handling.rst

Likewise for the C++ implementation defined behavior which right now you have
listed as on the toplevel when it is not.


> c++-extensions/backwards-compatibility.rst

Just Why not ext instead of extensions (at least remove the s).

> c++-extensions/c++-concepts.rst
concepts

> c++-extensions/interface-and-impl-pragmas.rst

template-pragmas

> c++-extensions/var-and-type-attrs.rst
> c++-extensions/deprecated-features.rst

Just deprecated.

> c++-extensions/function-pointer.rst

func-ptr

> c++-extensions/function-multiversioning.rst

multiversioning

> c++-extensions/restricting-pointer-aliasing.rst

restrict

> c++-extensions/type-traits.rst
> c++-extensions/vague-linkage.rst
> c++-extensions/volatile.rst
> c++-extensions/wheres-the-template.rst
> ./c++-extensions.rst


> c-extensions/128-bit-integers.rst
again c-ext

128bit-int

> c-extensions/additional-floating-types.rst

float-types

> c-extensions/alternate-keywords.rst
> c-extensions/inline-function.rst

inline

> c-extensions/void-fns-arithmetic.rst
void-funcs-addition

> c-extensions/arrays-of-length-zero.rst

zero length arrays

> c-extensions/arrays-of-variable-length.rst
variable length array

> c-extensions/attribute-syntax.rst

attributes

> c-extensions/0b-prefix-arithmetic.rst

0b literals

> c-extensions/memory-model-builtins.rst

atomics

> c-extensions/arithmetic-overflow-builtins.rst
just overflow

> c-extensions/c++-style-comments.rst

line comments

> c-extensions/case-ranges.rst
> c-extensions/cast-to-a-union-type.rst

union-cast

> c-extensions/complex-numbers.rst

complex

> c-extensions/compound-literals.rst
> c-extensions/omitted-operands-conditionals.rst
> c-extensions/constructing-fn-calls.rst
> c-extensions/decimal-floating-types.rst

dfp

> c-extensions/function-attrs/aarch64.rst
> c-extensions/function-attrs/amd-gcn.rst
> c-extensions/function-attrs/arc.rst
> c-extensions/function-attrs/arm.rst
> c-extensions/function-attrs/avr.rst
> c-extensions/function-attrs/blackfin.rst
> c-extensions/function-attrs/bpf.rst
> c-extensions/function-attrs/c-sky.rst
> c-extensions/function-attrs/common.rst
> c-extensions/function-attrs/epiphany.rst
> c-extensions/function-attrs/h8-300.rst
> c-extensions/function-attrs/ia-64.rst
> c-extensions/function-attrs/m32c.rst
> c-extensions/function-attrs/m32r-d.rst
> c-extensions/function-attrs/m68k.rst
> c-extensions/function-attrs/mcore.rst
> c-extensions/function-attrs/mep.rst
> c-extensions/function-attrs/microblaze.rst
> c-extensions/function-attrs/microsoft-windows.rst
> c-extensions/function-attrs/mips.rst
> c-extensions/function-attrs/msp430.rst
> c-extensions/function-attrs/nds32.rst
> c-extensions/function-attrs/nios-ii.rst
> c-extensions/function-attrs/nvidia-ptx.rst
> c-extensions/function-attrs/powerpc.rst
> c-extensions/function-attrs/risc-v.rst
> c-extensions/function-attrs/rl78.rst
> c-extensions/function-attrs/rx.rst
> c-extensions/function-attrs/s-390.rst
> c-extensions/function-attrs/sh.rst
> c-extensions/function-attrs/symbian-os.rst
> c-extensions/function-attrs/v850.rst
> c-extensions/function-attrs/visium.rst
> c-extensions/function-attrs/x86.rst
> c-extensions/function-attrs/xstormy16.rst

target-attr

> c-extensions/function-attrs.rst
> c-extensions/designated-initializers.rst
> c-extensions/fn-and-var-alignment.rst
> c-extensions/dollar-signs.rst
> c-extensions/double-word-integers.rst
> c-extensions/enumerator-attributes.rst
> c-extensions/fixed-point-types.rst
> c-extensions/target-format-checks.rst
> c-extensions/function-names-as-strings.rst
> c-extensions/fn-frame-address.rst
> c-extensions/half-precision-floating-point.rst
> c-extensions/hex-floats.rst
> c-extensions/inline-assembly.rst
> c-extensions/incomplete-enum-types.rst
> c-extensions/label-attributes.rst
> c-extensions/labels-as-values.rst
> c-extensions/legacy-memory-atomics.rst
legacy-sync-atomics

> c-extensions/locally-declared-labels.rst
> c-extensions/variadic-macros.rst
> c-extensions/mixed-declarations-labels.rst
> c-extensions/named-address-spaces.rst
> 

[Bug other/107634] Very long filenames and URLs for sphinx-based docs

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107634

--- Comment #8 from Martin Liška  ---
About the number of files. Yes, that's the biggest change when it comes to
Sphinx and I see it also as a drawback. However, it's the only valid file
naming scheme supported by Sphinx and there are projects with non-trivial docs
where the average size of a file matches to what we have:

gcc manual:

TOTAL files: 312
Total LOC: 68643
Average LOC: 220
Median LOC: 104

linux kernel:

TOTAL files: 3198
Total LOC: 649105
Average LOC: 202
Median LOC: 485

godot game engine:

=== TOTAL files: 1262
Total LOC: 308497
Average LOC: 244
Median LOC: 325

coreboot:

=== TOTAL files: 354
Total LOC: 36916
Average LOC: 104
Median LOC: 139

Note the GCC manual contains many target-specific sections and I don't believe
they should be presented at a single HTML page:

extensions-to-the-c-language-family/declaring-attributes-of-functions/ - 35
files
extensions-to-the-c-language-family/target-builtins/ - 36 files
gcc-command-options/machine-dependent-options/ - 62 files

Where I can imagine merging the files are following sub-folders:

extensions-to-the-c++-language/backwards-compatibility.rst [27]
extensions-to-the-c++-language/c++-concepts.rst [44]
extensions-to-the-c++-language/c++-interface-and-implementation-pragmas.rst
[97]
extensions-to-the-c++-language/c++-specific-variable-function-and-type-attributes.rst
[95]
extensions-to-the-c++-language/deprecated-features.rst [43]
extensions-to-the-c++-language/extracting-the-function-pointer-from-a-bound-pointer-to-member-function.rst
[48]
extensions-to-the-c++-language/function-multiversioning.rst [65]
extensions-to-the-c++-language/restricting-pointer-aliasing.rst [52]
extensions-to-the-c++-language/type-traits.rst [165]
extensions-to-the-c++-language/vague-linkage.rst [80]
extensions-to-the-c++-language/when-is-a-volatile-c++-object-accessed.rst [58]
extensions-to-the-c++-language/wheres-the-template.rst [131]
./extensions-to-the-c++-language.rst [34]

c-implementation-defined-behavior/architecture.rst [47]
c-implementation-defined-behavior/arrays-and-pointers.rst [46]
c-implementation-defined-behavior/characters.rst [93]
c-implementation-defined-behavior/declarators.rst [14]
c-implementation-defined-behavior/environment.rst [18]
c-implementation-defined-behavior/floating-point.rst [88]
c-implementation-defined-behavior/hints.rst [35]
c-implementation-defined-behavior/identifiers.rst [28]
c-implementation-defined-behavior/integers.rst [66]
c-implementation-defined-behavior/library-functions.rst [19]
c-implementation-defined-behavior/locale-specific-behavior.rst [12]
c-implementation-defined-behavior/preprocessing-directives.rst [54]
c-implementation-defined-behavior/qualifiers.rst [53]
c-implementation-defined-behavior/statements.rst [14]
c-implementation-defined-behavior/structures-unions-enumerations-and-bit-fields.rst
[78]
c-implementation-defined-behavior/translation.rst [20]
./c-implementation-defined-behavior.rst [46]

gnu-objective-c-features/compatibilityalias.rst [26]
gnu-objective-c-features/constant-string-objects.rst [64]
gnu-objective-c-features/exceptions.rst [79]
gnu-objective-c-features/fast-enumeration.rst [221]
gnu-objective-c-features/garbage-collection.rst [81]
gnu-objective-c-features/gnu-objective-c-runtime-api.rst [98]
gnu-objective-c-features/load-executing-code-before-main.rst [141]
gnu-objective-c-features/messaging-with-the-gnu-objective-c-runtime.rst [145]
gnu-objective-c-features/synchronization.rst [36]
gnu-objective-c-features/type-encoding.rst [280]

known-causes-of-trouble-with-gcc/actual-bugs-we-havent-fixed-yet.rst [14]
known-causes-of-trouble-with-gcc/certain-changes-we-dont-want-to-make.rst [236]
known-causes-of-trouble-with-gcc/common-misunderstandings-with-gnu-c.rst [296]
known-causes-of-trouble-with-gcc/disappointments-and-misunderstandings.rst
[102]
known-causes-of-trouble-with-gcc/fixed-header-files.rst [39]
known-causes-of-trouble-with-gcc/incompatibilities-of-gcc.rst [233]
known-causes-of-trouble-with-gcc/interoperation.rst [153]
known-causes-of-trouble-with-gcc/standard-libraries.rst [33]
known-causes-of-trouble-with-gcc/warning-messages-and-error-messages.rst [46]

language-standards-supported-by-gcc/c++-language.rst [71]
language-standards-supported-by-gcc/c-language.rst [139]
language-standards-supported-by-gcc/d-language.rst [11]
language-standards-supported-by-gcc/go-language.rst [10]
language-standards-supported-by-gcc/objective-c-and-objective-c++-languages.rst
[62]
language-standards-supported-by-gcc/references-for-other-languages.rst [13]

That's a reduction of ~50 files. To be honest, the split is mandatory thing and
there's not much I can do about it.

Just a note for the old .texi files: we used to have files
(./gcc/doc/invoke.texi ./gcc/doc/extend.texi, ./gcc/fortran/intrinsic.texi)
that tend to have 1000s of lines which is not ideal either.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

--- Comment #12 from Martin Liška  ---
(In reply to Andrew Pinski from comment #11)
> (In reply to CVS Commits from comment #8)
> 
> > It is confusing that 'Indexes and tables' contains TODO. One gets
> > Index by clicking to the Index link.
> 
> I don't see an Index link. There is no link to the top TOC anywhere either.

Can you see the mouse pointer on the screenshot? It points to a hyperlink
called Index. What's still missing?

[Bug other/107634] Very long filenames and URLs for sphinx-based docs

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107634

--- Comment #7 from Martin Liška  ---
So first to the original issue reported by David. Yes, the filenames were
selected based on chapter's caption and thus some of them are very long. For
gcc documentation, I'm suggesting following name scheme where the entire path
since base folder (gcc/doc/gcc) should be at maximum 50 characters w/o .rst
extension:

./binary-compatibility.rst
./c++-implementation-defined-behavior.rst
c-behavior/architecture.rst
c-behavior/arrays-and-pointers.rst
c-behavior/characters.rst
c-behavior/declarators.rst
c-behavior/environment.rst
c-behavior/floating-point.rst
c-behavior/hints.rst
c-behavior/identifiers.rst
c-behavior/integers.rst
c-behavior/library-functions.rst
c-behavior/locale-specific-behavior.rst
c-behavior/preprocessing-directives.rst
c-behavior/qualifiers.rst
c-behavior/statements.rst
c-behavior/compount-types.rst
c-behavior/translation.rst
./c-behavior.rst
./conditionally-supported-behavior.rst
./contributing.rst
./contributors.rst
./copyright.rst
./exception-handling.rst
c++-extensions/backwards-compatibility.rst
c++-extensions/c++-concepts.rst
c++-extensions/interface-and-impl-pragmas.rst
c++-extensions/var-and-type-attrs.rst
c++-extensions/deprecated-features.rst
c++-extensions/function-pointer.rst
c++-extensions/function-multiversioning.rst
c++-extensions/restricting-pointer-aliasing.rst
c++-extensions/type-traits.rst
c++-extensions/vague-linkage.rst
c++-extensions/volatile.rst
c++-extensions/wheres-the-template.rst
./c++-extensions.rst
c-extensions/128-bit-integers.rst
c-extensions/additional-floating-types.rst
c-extensions/alternate-keywords.rst
c-extensions/inline-function.rst
c-extensions/void-fns-arithmetic.rst
c-extensions/arrays-of-length-zero.rst
c-extensions/arrays-of-variable-length.rst
c-extensions/attribute-syntax.rst
c-extensions/0b-prefix-arithmetic.rst
c-extensions/memory-model-builtins.rst
c-extensions/arithmetic-overflow-builtins.rst
c-extensions/c++-style-comments.rst
c-extensions/case-ranges.rst
c-extensions/cast-to-a-union-type.rst
c-extensions/complex-numbers.rst
c-extensions/compound-literals.rst
c-extensions/omitted-operands-conditionals.rst
c-extensions/constructing-fn-calls.rst
c-extensions/decimal-floating-types.rst
c-extensions/function-attrs/aarch64.rst
c-extensions/function-attrs/amd-gcn.rst
c-extensions/function-attrs/arc.rst
c-extensions/function-attrs/arm.rst
c-extensions/function-attrs/avr.rst
c-extensions/function-attrs/blackfin.rst
c-extensions/function-attrs/bpf.rst
c-extensions/function-attrs/c-sky.rst
c-extensions/function-attrs/common.rst
c-extensions/function-attrs/epiphany.rst
c-extensions/function-attrs/h8-300.rst
c-extensions/function-attrs/ia-64.rst
c-extensions/function-attrs/m32c.rst
c-extensions/function-attrs/m32r-d.rst
c-extensions/function-attrs/m68k.rst
c-extensions/function-attrs/mcore.rst
c-extensions/function-attrs/mep.rst
c-extensions/function-attrs/microblaze.rst
c-extensions/function-attrs/microsoft-windows.rst
c-extensions/function-attrs/mips.rst
c-extensions/function-attrs/msp430.rst
c-extensions/function-attrs/nds32.rst
c-extensions/function-attrs/nios-ii.rst
c-extensions/function-attrs/nvidia-ptx.rst
c-extensions/function-attrs/powerpc.rst
c-extensions/function-attrs/risc-v.rst
c-extensions/function-attrs/rl78.rst
c-extensions/function-attrs/rx.rst
c-extensions/function-attrs/s-390.rst
c-extensions/function-attrs/sh.rst
c-extensions/function-attrs/symbian-os.rst
c-extensions/function-attrs/v850.rst
c-extensions/function-attrs/visium.rst
c-extensions/function-attrs/x86.rst
c-extensions/function-attrs/xstormy16.rst
c-extensions/function-attrs.rst
c-extensions/designated-initializers.rst
c-extensions/fn-and-var-alignment.rst
c-extensions/dollar-signs.rst
c-extensions/double-word-integers.rst
c-extensions/enumerator-attributes.rst
c-extensions/fixed-point-types.rst
c-extensions/target-format-checks.rst
c-extensions/function-names-as-strings.rst
c-extensions/fn-frame-address.rst
c-extensions/half-precision-floating-point.rst
c-extensions/hex-floats.rst
c-extensions/inline-assembly.rst
c-extensions/incomplete-enum-types.rst
c-extensions/label-attributes.rst
c-extensions/labels-as-values.rst
c-extensions/legacy-memory-atomics.rst
c-extensions/locally-declared-labels.rst
c-extensions/variadic-macros.rst
c-extensions/mixed-declarations-labels.rst
c-extensions/named-address-spaces.rst
c-extensions/nested-functions.rst
c-extensions/non-constant-initializers.rst
c-extensions/non-lvalue-arrays.rst
c-extensions/nonlocal-gotos.rst
c-extensions/object-size-builtins.rst
c-extensions/other-fn-builtins.rst
c-extensions/pointer-arg-in-var-fns.rst
c-extensions/qualified-array-pointers.rst
c-extensions/pragmas-accepted-by-gcc.rst
c-extensions/prototypes-and-old-style-fns.rst
c-extensions/typeof-reference.rst
c-extensions/escaped-newlines-rules.rst
c-extensions/type-attrs.rst
c-extensions/var-attrs.rst
c-extensions/statement-attributes.rst

[Bug web/107650] Sphinx generated web pages don't have "up" (to the section TOC)

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107650

--- Comment #2 from Andrew Pinski  ---
Index is different from TOC. The up should goto the section TOC and not the
index of the section.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

--- Comment #11 from Andrew Pinski  ---
(In reply to CVS Commits from comment #8)

> It is confusing that 'Indexes and tables' contains TODO. One gets
> Index by clicking to the Index link.

I don't see an Index link. There is no link to the top TOC anywhere either.

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107643, which changed state.

Bug 107643 Summary: [13 Regression] sphinx generated indexes are not working at 
all
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

   What|Removed |Added

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

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

Andrew Pinski  changed:

   What|Removed |Added

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

--- Comment #10 from Andrew Pinski  ---
Still not fixed.
The "Indexes and tables" page still does NOT link the index.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

Martin Liška  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #9 from Martin Liška  ---
Closing now.

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107643, which changed state.

Bug 107643 Summary: [13 Regression] sphinx generated indexes are not working at 
all
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

--- Comment #8 from CVS Commits  ---
The master branch has been updated by Martin Liska :

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

commit r13-3942-gc64fd69420fd153f9fb16a603ff0a711fbde8335
Author: Martin Liska 
Date:   Sun Nov 13 15:16:12 2022 +0100

sphinx: include todolist only if INCLUDE_TODO env. set

It is confusing that 'Indexes and tables' contains TODO. One gets
Index by clicking to the Index link.

PR web/107643

ChangeLog:

* doc/baseconf.py: Set include_todo tag if INCLUDE_TODO env
is set.
* doc/indices-and-tables.rst: Use include_todo tag.

[Bug ipa/107667] IPA: Speculatively reuse existing specializations

2022-11-13 Thread christophm30 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107667

--- Comment #1 from Christoph Müllner  ---
RFC patch can be found on list:
https://gcc.gnu.org/pipermail/gcc-patches/2022-November/605936.html

[Bug ipa/107666] IPA: Speculatively dereferencing function pointers

2022-11-13 Thread christophm30 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107666

--- Comment #1 from Christoph Müllner  ---
RFC patch can be found on list:
https://gcc.gnu.org/pipermail/gcc-patches/2022-November/605934.html

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107620, which changed state.

Bug 107620 Summary: Build errors when using sphinx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107620

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

[Bug other/107620] Build errors when using sphinx

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107620

Martin Liška  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #6 from Martin Liška  ---
> 
> I found that using that allowed me to build html documentation. However I
> seemed to need in addition a whole bunch of stuff to build latex and pdf
> documentation.

Yes, these dependencies are usually installed if you install
python3-Sphinx-latex package.

[Bug other/107620] Build errors when using sphinx

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107620

--- Comment #5 from Martin Liška  ---
> Is the above error due to not installing sphinx 5.3.0?

Yes, and you should get a better message now.

> I assumed installing sphinx 5.3.0 would help, but after installing sphinx
> 5.3.0, I get a different error:
> 
> Extension error:
> Could not import extension gcc_sphinx (exception: No module named
> 'gcc_sphinx')
> Makefile:84: recipe for target 'info' failed

Should be fixed with r13-3871-g70f1c41061b2b5.

[Bug other/107620] Build errors when using sphinx

2022-11-13 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107620

--- Comment #4 from CVS Commits  ---
The master branch has been updated by Martin Liska :

https://gcc.gnu.org/g:5e749ee3019d7917184af30dab8d09c933c0a4a1

commit r13-3940-g5e749ee3019d7917184af30dab8d09c933c0a4a1
Author: Martin Liska 
Date:   Sun Nov 13 15:07:17 2022 +0100

configure: always set SPHINX_BUILD

During the Sphinx-migration development, I used
SPHINX_BUILD='' in order to skip building info and manual
pages in gcc folder. However, we've got HAS_SPHINX_BUILD
which is the correct flag for that.

With the patch, one will get a nicer error message when
sphinx-build is missing and one builds (explicitly) a target which
depends on it.

PR other/107620

gcc/ChangeLog:

* configure: Regenerate.
* configure.ac: Always set sphinx-build.

libgomp/ChangeLog:

* configure: Regenerate.
* configure.ac: Always set sphinx-build.

libiberty/ChangeLog:

* configure: Regenerate.
* configure.ac: Always set sphinx-build.

libitm/ChangeLog:

* configure: Regenerate.
* configure.ac: Always set sphinx-build.

libquadmath/ChangeLog:

* configure: Regenerate.
* configure.ac: Always set sphinx-build.

[Bug ipa/107667] New: IPA: Speculatively reuse existing specializations

2022-11-13 Thread christophm30 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107667

Bug ID: 107667
   Summary: IPA: Speculatively reuse existing specializations
   Product: gcc
   Version: 13.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: christophm30 at gmail dot com
CC: marxin at gcc dot gnu.org
  Target Milestone: ---

This is a feature request, not a bug report.

GCC already does an excellent job in specializing functions in ipa-cp. Such
specialized functions often result in much faster execution because the
additional information enables additional optimizations (e.g. vectorization).

Different call sites can have different specializations and some call sites
might not get specialized at all. When looking at the not-specialized call
sites, there is one strategy that can be applied: add guards to test if
existing specializations can be reused and if so call them.

Such an optimization has to be built into ipa-cp and collects all specialized
functions, and the constants that are propagated. At the end of the propagation
stage, the call graph is changed to add speculative edges to the specialized
functions with guards that test if the actual arguments match the constants.

To demonstrate the effect, let's consider the following program part:

  func_1()
myfunc(1)
  func_2()
myfunc(2)
  func_i(i)
myfunc(i)

In this case the transformation would do the following:

  func_1()
myfunc.constprop.1() // myfunc() with arg0 == 1
  func_2()
myfunc.constprop.2() // myfunc() with arg0 == 2
  func_i(i)
if (i == 1)
  myfunc.constprop.1() // myfunc() with arg0 == 1
else if (i == 2)
  myfunc.constprop.2() // myfunc() with arg0 == 2
else
  myfunc(i)

Similar to `-devirtualize-speculatively`, such an optimization can be gated
using a flag (e.g. `-fipa-guarded-specialization`).

One example where this optimization would trigger is x264 (also part of
CPU2017), where the function pointer `get_ref` is assigned a single time during
startup, and then called multiple times with constant arguments (8 or 16) or
with "unknown" arguments which are actually matching the constants at runtime.
In combination with PR ipa/107666 (which converts the function pointers into
guarded direct calls), this allows propagating the constants into `pixel_avg`,
where (limited as documented in PR 106352) vectorization will be enabled.

[Bug ipa/107666] New: IPA: Speculatively dereferencing function pointers

2022-11-13 Thread christophm30 at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107666

Bug ID: 107666
   Summary: IPA: Speculatively dereferencing function pointers
   Product: gcc
   Version: 13.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ipa
  Assignee: unassigned at gcc dot gnu.org
  Reporter: christophm30 at gmail dot com
CC: marxin at gcc dot gnu.org
  Target Milestone: ---

This is a feature request, not a bug report.

GCC already does speculative call graph optimizations (ipa-devirt does so when
enabled via -fdevirtualize-speculatively). The idea is to identify virtual
functions that will most likely always have the same target, which cannot be
(easily) proven, and convert them into direct calls. A major benefit is that
direct calls can be optimized by ipa-cp.

The idea is applicable to function pointers as well: identify indirect calls,
which most likely will call the same target, and convert them into guarded
direct calls. Given the existing infrastructure to add speculative edges, we
only need to focus on "strongly believe".

One approach would be to do the following:
* Analysis 1: Collection of function pointer type assignments (e.g. p->cb =
mycb ==> field "cb" of record points to function "mycb")
* Analysis 2: Collection of indirect calls (e.g. p->cb() ==> field "cb" of
record is used in a the analysed function)
* Propagation: Iterate over indirect calls and lookup possible function pointer
type assignments; If one is available, then convert it into a speculative
(guarded) direct call.
* Transformation: Use existing infrastructure to emit guarded direct calls
(gimple_ic).

Similar to `-devirtualize-speculatively`, such an optimization can be gated
using a flag (e.g. `-fipa-guarded-deref`).

One example where this optimization would trigger is x264 (also part of
CPU2017), where the function pointer `get_ref` is assigned a single time during
startup, and then called multiple times with constant arguments (8 or 16).
Dereferencing these function pointers would allow further optimization if
propagated by ipa-cp.

[Bug middle-end/107661] [13 Regression] lambdas get merged incorrectly in tempaltes, cause llvm-12 miscompilation since r13-3358-ge0403e95689af7

2022-11-13 Thread jamborm at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107661

Martin Jambor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1
   Assignee|unassigned at gcc dot gnu.org  |jamborm at gcc dot 
gnu.org
   Last reconfirmed||2022-11-13

--- Comment #6 from Martin Jambor  ---
Interesting, I'll have a look.

[Bug middle-end/107661] [13 Regression] lambdas get merged incorrectly in tempaltes, cause llvm-12 miscompilation since r13-3358-ge0403e95689af7

2022-11-13 Thread slyfox at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107661

Sergei Trofimovich  changed:

   What|Removed |Added

Summary|[13 Regression] lambdas get |[13 Regression] lambdas get
   |merged incorrectly in   |merged incorrectly in
   |tempaltes, cause llvm-12|tempaltes, cause llvm-12
   |miscompilation  |miscompilation since
   ||r13-3358-ge0403e95689af7

--- Comment #5 from Sergei Trofimovich  ---
Bisected down to r13-3358-ge0403e95689af7 (looks very relevant):

commit e0403e95689af7d562c7d04f706e9e25115747ff
Author: Martin Jambor 
Date:   Tue Oct 18 14:14:26 2022 +0200

ipa-cp: Better representation of aggregate values we clone for

This patch replaces linked lists of ipa_agg_replacement_value with
vectors of similar structures called ipa_argagg_value and simplifies
how we compute them in the first place.  Having a vector should also
result in less overhead when allocating and because we keep it sorted,
it leads to logarithmic searches.

The slightly obnoxious "argagg" bit in the name can be changed into
"agg" after the next patch removes our current ipa_agg_value type.

The patch also introduces type ipa_argagg_value_list which serves as a
common view into a vector of ipa_argagg_value structures regardless
whether they are stored in GC memory (required for IPA-CP
transformation summary because we store trees) or in an auto_vec which
is hopefully usually only allocated on stack.

The calculation of aggreagete costant values for a given subsert of
callers is then rewritten to compute known constants for each
edge (some pruning to skip obviously not needed is still employed and
should not be really worse than what I am replacing) and these vectors
are there intersected, which can be done linearly since they are
sorted.  The patch also removes a lot of heap allocations of small
lists of aggregate values and replaces them with stack based
auto_vecs.

As Richard Sandiford suggested, I use std::lower_bound from
 rather than re-implementing bsearch for array_slice.  The
patch depends on the patch which adds the ability to construct
array_slices from gc-allocated vectors.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2022-11-13
 Ever confirmed|0   |1
   Assignee|unassigned at gcc dot gnu.org  |marxin at gcc dot 
gnu.org

--- Comment #7 from Martin Liška  ---
(In reply to Andrew Pinski from comment #5)
> How is this invalid when the docs still say todo on them?

Oh, this one. The 'TODO' refers to todolist extension which lists all todos in
the documentation and is excluded in the non-development version of the
documentation.
Anyway, I'm going to remove it.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #8 from Martin Liška  ---
(In reply to Andrew Pinski from comment #6)
> Also search bars are not very useful if you say searching for an option and
> it turns up non option related stuff.

It's not searching only options, but also in titles and content of pages.

> An example of that is you search for vectorize you it turns up the extension
> page.
> 
> Indexes are useful for searching and researching and having the options all
> in one place.

You can quickly find 'vectorize' option in the sphinx version of the Index.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #7 from Martin Liška  ---
(In reply to Andrew Pinski from comment #3)
> Your index page has both options and symbols intermixed and not two
> different pages. Funny how you said one thing and it is exact opposite.

Index page contains everything: Titles, all directives and stuff that is marked
with '.. index:' directive. What did I say is exact opposite, can you explain
it, please?

> Also that page is not linked anywhere from the site. 

It is linked: https://gcc.gnu.org/onlinedocs/gcc/indices-and-tables.html#

As I showed in the screenshot. We can put it directly to
https://gcc.gnu.org/onlinedocs/gcc/indices-and-tables.html if we want.

> 
> Oh also the formatting on some of things looks off. Look at x86 and you will
> see what I am talking about.

Yes, it's the result of the conversion, where 'x86' is commonly used in '..
index:' directives.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #6 from Andrew Pinski  ---
Also search bars are not very useful if you say searching for an option and it
turns up non option related stuff.
An example of that is you search for vectorize you it turns up the extension
page.

Indexes are useful for searching and researching and having the options all in
one place.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #5 from Andrew Pinski  ---
Oh wait I just realized that symbol here is -. That is just useless. And even
not ignoring f or m as part of the option in the index will also be useless and
just having parts in m and f.

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

--- Comment #4 from Andrew Pinski  ---
Symbols are listed separately but again not on a separate page. Plus the two
columns make it difficult to read on mobile. Again this still different from my
request too.

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107651, which changed state.

Bug 107651 Summary: Having two different kind of indexes is very useful still
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

   What|Removed |Added

 Status|RESOLVED|NEW
 Resolution|INVALID |---

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|INVALID |---
 Status|RESOLVED|NEW
 Ever confirmed|0   |1
   Last reconfirmed||2022-11-13

--- Comment #3 from Andrew Pinski  ---
Your index page has both options and symbols intermixed and not two different
pages. Funny how you said one thing and it is exact opposite.
Also that page is not linked anywhere from the site. 

Oh also the formatting on some of things looks off. Look at x86 and you will
see what I am talking about.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

--- Comment #6 from Andrew Pinski  ---
(In reply to Martin Liška from comment #3)
> The preferred way of searching is using the Search text input on the left.
> It works very well.

Expect if you don't know the name of an option reading the index is important.

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107643, which changed state.

Bug 107643 Summary: [13 Regression] sphinx generated indexes are not working at 
all
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

   What|Removed |Added

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

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

Andrew Pinski  changed:

   What|Removed |Added

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

--- Comment #5 from Andrew Pinski  ---
How is this invalid when the docs still say todo on them?

[Bug middle-end/107498] Wrong optimization leads to unaligned access when compiling OpenLDAP

2022-11-13 Thread ebotcazou at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107498

--- Comment #11 from Eric Botcazou  ---
> FWIW, the issue does not show when compiling with clang.

This probably means that GCC generates better/smaller code then.

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107651, which changed state.

Bug 107651 Summary: Having two different kind of indexes is very useful still
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

   What|Removed |Added

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

[Bug web/107651] Having two different kind of indexes is very useful still

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107651

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID
 CC||marxin at gcc dot gnu.org

--- Comment #2 from Martin Liška  ---
(In reply to Andrew Pinski from comment #0)
> The texinfo generated indexes had two different kind of index.
> One for options and one for Concepts.
> I think for the user manual this should definitely stay around.
> 
> If we could split it the concepts even further like lists all pargmas
> together and all attributes together that would even be better.

Sphinx is even better here, it builds index listing based on Directives (types
of category): https://gcc.gnu.org/onlinedocs/gcc/genindex.html

> 
> Since indexes are currently broken, PR 107643. It is hard to tell what it
> will be like.

They are all avaiable.

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107643, which changed state.

Bug 107643 Summary: [13 Regression] sphinx generated indexes are not working at 
all
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

   What|Removed |Added

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

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

Martin Liška  changed:

   What|Removed |Added

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

--- Comment #4 from Martin Liška  ---
Invalid.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

--- Comment #3 from Martin Liška  ---
The preferred way of searching is using the Search text input on the left. It
works very well.

[Bug web/107643] [13 Regression] sphinx generated indexes are not working at all

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107643

Martin Liška  changed:

   What|Removed |Added

 CC||marxin at gcc dot gnu.org

--- Comment #2 from Martin Liška  ---
Created attachment 53892
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53892=edit
Screenshot

There's a screenshot that should link to Index where you have the expected
listing.

[Bug web/107644] [13 Regression] Sphinx generated web pages is not using the full width of the window

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107644

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2022-11-13
 CC||marxin at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Martin Liška  ---
Confirmed. I know there are other templates (RTD) that works better with full
screen width: https://docs.kernel.org/

Please file bug at https://github.com/pradyunsg/furo.

[Bug other/107621] sphinx generated documents has too much white space on the top

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107621

--- Comment #8 from Martin Liška  ---
(In reply to Andrew Pinski from comment #6)
> How does this fancy stuff work on a text based browser like links or lynx?

It works very well based on what I've seen using lynx browser.

> Do we really need this fancy stuff for a manual?

I hope yes, it was one of the drivers. The old documentation is legacy, purely
formatted HTML w/o search capability and no text formatting.

> Seriously this is getting out of hand.

[Bug other/107655] [meta-bug] tracker bug for issues encountered in the texinfo-to-sphinx migration

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107655
Bug 107655 depends on bug 107621, which changed state.

Bug 107621 Summary: sphinx generated documents has too much white space on the 
top
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107621

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

[Bug other/107621] sphinx generated documents has too much white space on the top

2022-11-13 Thread marxin at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107621

Martin Liška  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|UNCONFIRMED |RESOLVED
 CC||marxin at gcc dot gnu.org

--- Comment #7 from Martin Liška  ---
This is fixed as Gerald fixed up set-up of the server.

[Bug other/107620] Build errors when using sphinx

2022-11-13 Thread ramana at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107620

Ramana Radhakrishnan  changed:

   What|Removed |Added

 CC||ramana at gcc dot gnu.org

--- Comment #3 from Ramana Radhakrishnan  ---
I worked around this by installing everything in $SRCDIR/doc/requirements.txt.

pip3 install -r requirements.txt 


 I found that using that allowed me to build html documentation. However I
seemed to need in addition a whole bunch of stuff to build latex and pdf
documentation.

Ramana

[Bug middle-end/107498] Wrong optimization leads to unaligned access when compiling OpenLDAP

2022-11-13 Thread glaubitz at physik dot fu-berlin.de via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107498

--- Comment #10 from John Paul Adrian Glaubitz  ---
(In reply to Eric Botcazou from comment #9)
> > Program received signal SIGBUS, Bus error.
> > 0x010ceda4 in mdb_node_add (mc=0x14327b8, indx=,
> > key=0x7fee0a0, data=0x7fee090, pgno=0, flags=0) at
> > ./../../../libraries/liblmdb/mdb.c:7366
> > 7366mp->mp_lower += sizeof(indx_t);
> > (gdb) p mp
> > $1 = (MDB_page *) 0x1463caa
> 
> Thanks.  So that's definitely *not* a compiler bug but a programming error
> as per the 6.5.3.2(4) clause of the ISO C standard:

FWIW, the issue does not show when compiling with clang.

[Bug middle-end/107498] Wrong optimization leads to unaligned access when compiling OpenLDAP

2022-11-13 Thread ebotcazou at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107498

Eric Botcazou  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |INVALID

--- Comment #9 from Eric Botcazou  ---
> Program received signal SIGBUS, Bus error.
> 0x010ceda4 in mdb_node_add (mc=0x14327b8, indx=,
> key=0x7fee0a0, data=0x7fee090, pgno=0, flags=0) at
> ./../../../libraries/liblmdb/mdb.c:7366
> 7366mp->mp_lower += sizeof(indx_t);
> (gdb) p mp
> $1 = (MDB_page *) 0x1463caa

Thanks.  So that's definitely *not* a compiler bug but a programming error as
per the 6.5.3.2(4) clause of the ISO C standard:

"The unary * operator denotes indirection. If the operand points to a function,
the result is a function designator; if it points to an object, the result is
an lvalue designating the object. If the operand has type "pointer to type",
the result has type "type". If an invalid value has been assigned to the
pointer, the behavior of the unary * operator is undefined.(106)"

(106)
Among the invalid values for dereferencing a pointer by the unary * operator
are a null pointer, an address inappropriately aligned for the type of object
pointed to, and the address of an object after the end of its lifetime.

[Bug tree-optimization/107326] [13 Regression] ICE: verify_gimple failed (error: type mismatch in binary expression) since r13-3219-g25413fdb2ac249

2022-11-13 Thread ramana at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107326

Ramana Radhakrishnan  changed:

   What|Removed |Added

 CC||ramana at gcc dot gnu.org

--- Comment #4 from Ramana Radhakrishnan  ---
Fixed ?

[Bug tree-optimization/105867] [12/13 Regression] incorrect dangling-pointer warning

2022-11-13 Thread agriff at tin dot it via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105867

Andrea Griffini  changed:

   What|Removed |Added

 CC||agriff at tin dot it

--- Comment #4 from Andrea Griffini  ---
Created attachment 53891
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53891=edit
Simpler version that triggers the bug

This code compiled on 12.2.0 with -O3 -Wall generates a warning about storing
the address of a local variable. Surprisingly (for me) adding either of the two
`printf` statements makes the warning go away.

The code seems correct to me; a doubly linked list of all instances of Node is
kept by inserting nodes in constructor and removing them in destructor.

[Bug c++/107638] [13 Regression] options.h:239:36: error: token "." is not valid in preprocessor expressions

2022-11-13 Thread jbglaw--- via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107638

Jan-Benedict Glaw  changed:

   What|Removed |Added

 CC||jbg...@lug-owl.de

--- Comment #2 from Jan-Benedict Glaw  ---
Seen also for --target=sparc-wrs-vxworks, sh-wrs-vxworks, powerpc-wrs-vxworks,
mips-wrs-vxworks, i686-wrs-vxworks.