Remove double-int.
Proposes removing the double-int implementation in favor of wide-int.h's fixed_wide_int.
This RFC proposes to remove the double-int component from GCC. The author argues that wide_int.h’s fixed_wide_int offers similar functionality without heap usage, simplifying parts of the build process and helping with a specific bug (PR126622). The change would involve removing double-int.{cc,h} and updating various other GCC components that currently depend on it.
In Details
The double-int implementation in GCC provides 128-bit integer arithmetic, likely used for intermediate calculations in tree-ssa or RTL. This RFC suggests replacing it with fixed_wide_int from wide_int.h, which avoids heap allocations and may simplify related code, particularly in constant folding and tree node construction. The removal would affect multiple parts of the compiler, including AVR backend, C++ parser, dwarf2out, and RTL manipulation.
- double-int
- A GCC internal data type or implementation for handling 128-bit integers, likely used for intermediate values in calculations.
- wide-int.h
- A GCC header file providing fixed-width arbitrary precision integer types, potentially an alternative or replacement for double-int.
- PR126622
- A specific bug report within the GCC project, which this change aims to help resolve.
- build_int_cst
- Likely a function or component within GCC responsible for building integer constants, possibly related to tree or RTL representations.
- tree-ssa
- GCC's primary intermediate representation (IR) and analysis framework, using Static Single Assignment form.
- RTL
- Register Transfer Language, an intermediate representation used by GCC after the SSA phase.
- dwarf2out.cc
- A GCC source file responsible for generating DWARF debugging information, version 2.