Next:GENERIC, Previous:Passes and Files of the Compiler, Up:Introduction [Contents][Index]
GCC allows the size of a hardware register to be a runtime invariantrather than a compile-time constant. This in turn means that varioussizes and offsets must also be runtime invariants rather thancompile-time constants, such as:
machine_mode (seeMachine Modes);mem rtx (seeRegisters and Memory); andsubreg rtx (seeRegisters and Memory).The motivating example is the Arm SVE ISA, whose vector registers can beany multiple of 128 bits between 128 and 2048 inclusive. The compilernormally produces code that works for all SVE register sizes, with theactual size only being known at runtime.
GCC’s main representation of such runtime invariants is thepoly_int class. This chapter describes whatpoly_intdoes, lists the available operations, and gives some generalusage guidelines.