Subzero: Randomize register assignment. Randomize the order that registers appear in the free list. Only randomize fully "equivalent" registers to ensure no extra spills. This adds the -randomize-regalloc option. This is a continuation of https://codereview.chromium.org/456033003/ which Matt owns. BUG= none R=jfb@chromium.org Review URL: https://codereview.chromium.org/807293003
diff --git a/src/IceTargetLoweringX8632.h b/src/IceTargetLoweringX8632.h index 2846ac9..6e2bed9 100644 --- a/src/IceTargetLoweringX8632.h +++ b/src/IceTargetLoweringX8632.h
@@ -180,6 +180,10 @@ OperandX8632Mem *getMemoryOperandForStackSlot(Type Ty, Variable *Slot, uint32_t Offset = 0); + void makeRandomRegisterPermutation( + llvm::SmallVectorImpl<int32_t> &Permutation, + const llvm::SmallBitVector &ExcludeRegisters) const; + // The following are helpers that insert lowered x86 instructions // with minimal syntactic overhead, so that the lowering code can // look as close to assembly as practical.