Codegen Settings

These settings are augmented with control for register allocation, instruction scheduling and folding (peephole). Register allocation places local variables in registers, to achieve this it performs variable lifetime analysis and leads to some variables used as temporaries to disappear. Variable lifetimes are recorded in the debugging informatin to provide accurate runtime values. Turning off this setting forces all locals to be stack based except compiler generated temporaries.

Peephole optimization replaces simple instructions sequences into more complex ones, reducing code size and often speeds up code. Instruction scheduling is performed at optimization level 2 and up, it schedules instructions to minimize latency.

The PC-relative strings setting was removed from the codegen setting to provide consistent behavior with all PC-relative pragmas: pcrelstrings, pcreldata, pcrelconstdata. The __declspec(pcrel) declaration specifier can also be used to force individual declaration to use pc relative addressing.