Subzero: Improve handling of alloca instructions of constant size.

PNaCl simplifies varargs calls by creating a known-size argument array with an alloca instruction, and passing the address of that argument array.  These alloca instructions don't necessarily require use of a frame pointer, freeing up the frame pointer register for normal register allocation.

These varargs calls sometimes show up in cold paths of hot functions, so increasing the number of registers available to the register allocator can produce tangible gains.

This patch does a simple recognition of these alloca patterns, and on x86 doesn't force a frame pointer if all alloca instructions are suitable.

Future work is to avoid saving the alloca result as a local variable, and instead rematerialize the address as needed with respect to the stack or frame pointer.

BUG= none
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1361803002 .
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index 5ea7d31..7f3eaa7 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -359,7 +359,8 @@
   bool HasComputedFrame = false;
   bool CallsReturnsTwice = false;
   /// StackAdjustment keeps track of the current stack offset from its natural
-  /// location, as arguments are pushed for a function call.
+  /// location, e.g. as arguments are pushed for a function call or as
+  /// fixed-size alloca instructions are executed in the entry block.
   int32_t StackAdjustment = 0;
   SizeT NextLabelNumber = 0;
   SizeT NextJumpTableNumber = 0;