abseil / abseil/abseil-cpp

[Bug]: Incorrect absl::bit_width return type for gcc <= 12

Abierto
#1,890 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
18.1k
Forks
3.2k
Merge medio
20 h 36 min
PR fusionados (30 d)
1

Descripción

### Describe the issue

`absl::bit_width(0UL)` should return an `int`. With gcc <= 12 and C++20, it's `unsigned long` since `absl::bit_width` is an alias for `std::bit_width`.

https://github.com/abseil/abseil-cpp/blob/41a1f434d40bc6089acaf026b00c5f8f917e8706/absl/numeric/bits.h#L148

libcstdc++ fixed this in https://github.com/gcc-mirror/gcc/commit/4581328022615c2cb732cfb404151c4b059d26e3#diff-b38391c368270ae056dc788c5adfd749d9fd6fffc9a7c2287da44ce88b6139fd

### Steps to reproduce the problem

https://godbolt.org/z/jebjo6GKb

`static_assert(std::is_same_v);`

### What version of Abseil are you using?

LTS 20250512.0

### What operating system and version are you using?

debian testing

### What compiler and version are you using?

```
Using built-in specs.
COLLECT_GCC=/opt/compiler-explorer/gcc-12.4.0/bin/g++
Target: x86_64-linux-gnu
Configured with: ../gcc-12.4.0/configure --prefix=/opt/compiler-explorer/gcc-build/staging --enable-libstdcxx-backtrace=yes --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --disable-bootstrap --enable-multiarch --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --enable-clocale=gnu --enable-languages=c,c++,fortran,ada,objc,obj-c++,go,d --enable-ld=yes --enable-gold=yes --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-linker-build-id --enable-lto --enable-plugins --enable-threads=posix --with-pkgversion=Compiler-Explorer-Build-gcc--binutils-2.42
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 12.4.0 (Compiler-Explorer-Build-gcc--binutils-2.42)
COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-g' '-o' '/app/output.s' '-masm=intel' '-fno-verbose-asm' '-S' '-std=c++20' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' '/app/'
/opt/compiler-explorer/gcc-12.4.0/bin/../libexec/gcc/x86_64-linux-gnu/12.4.0/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -iprefix /opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/x86_64-linux-gnu/12.4.0/ -D_GNU_SOURCE -quiet -dumpdir /app/ -dumpbase output.cpp -dumpbase-ext .cpp -masm=intel -mtune=generic -march=x86-64 -g -std=c++20 -version -fdiagnostics-color=always -fno-verbose-asm -o /app/output.s
GNU C++20 (Compiler-Explorer-Build-gcc--binutils-2.42) version 12.4.0 (x86_64-linux-gnu)
compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../x86_64-linux-gnu/include"
ignoring duplicate directory "/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../include/c++/12.4.0"
ignoring duplicate directory "/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../include/c++/12.4.0/x86_64-linux-gnu"
ignoring duplicate directory "/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../include/c++/12.4.0/backward"
ignoring duplicate directory "/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/12.4.0/include"
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring duplicate directory "/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/12.4.0/include-fixed"
ignoring nonexistent directory "/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../include/c++/12.4.0
/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../include/c++/12.4.0/x86_64-linux-gnu
/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/x86_64-linux-gnu/12.4.0/../../../../include/c++/12.4.0/backward
/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/x86_64-linux-gnu/12.4.0/include
/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/x86_64-linux-gnu/12.4.0/include-fixed
/usr/local/include
/opt/compiler-explorer/gcc-12.4.0/bin/../lib/gcc/../../include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
GNU C++20 (Compiler-Explorer-Build-gcc--binutils-2.42) version 12.4.0 (x86_64-linux-gnu)
compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: c7335fbf28754d6313ca2e82b97549fe
:4:20: error: static assertion failed
4 | static_assert(std::is_same_v);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Compiler returned: 1
```

### What build system are you using?

n/a

### Additional context

_No response_

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.