+
+ // This forces linking of the greedy register allocator, so -regalloc=greedy
+ // works in clang.
+ if (Ctor == createGreedyRegisterAllocator)
+ return createGreedyRegisterAllocator();
+
+ if (Ctor != createDefaultRegisterAllocator)
+ return Ctor();
+
+ // When the 'default' allocator is requested, pick one based on OptLevel.
+ switch (OptLevel) {
+ case CodeGenOpt::None:
+ return createFastRegisterAllocator();
+ default:
+ return createLinearScanRegisterAllocator();
+ }