abseil / abseil/abseil-cpp

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

Đang mở
#1,890 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C++
Star
18.1k
Fork
3.2k
Merge trung bình
20 giờ 36 phút
Pull request đã merge (30 ngày)
1

Mô tả

### 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_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.