Subzero: Allow extra args to be passed to llc and Subzero.

Use --llc to pass extra arguments to pnacl-translate.

Use --sz to pass extra arguments to llvm2ice.

The --stats argument is removed from the script because it is Subzero-only, and can now be done with --sz=--stats .

BUG= none
R=jvoung@chromium.org

Review URL: https://codereview.chromium.org/582593002
diff --git a/pydir/szbuild.py b/pydir/szbuild.py
index 32311f1..8368e62 100755
--- a/pydir/szbuild.py
+++ b/pydir/szbuild.py
@@ -83,8 +83,10 @@
     argparser.add_argument('--verbose', '-v', dest='verbose',
                            action='store_true',
                            help='Display some extra debugging output')
-    argparser.add_argument('--stats', dest='stats', action='store_true',
-                           help='Enable Subzero stats output')
+    argparser.add_argument('--sz', dest='sz_args', action='append', default=[],
+                           help='Extra arguments for Subzero')
+    argparser.add_argument('--llc', dest='llc_args', action='append',
+                           default=[], help='Extra arguments for llc')
 
 def main():
     """Create a hybrid translation from Subzero and llc.
@@ -172,11 +174,15 @@
     if args.force or NewerThanOrNotThere(pexe, obj_llc) or \
             NewerThanOrNotThere(llcbin, obj_llc):
         opt_level_map = { 'm1':'0', '-1':'0', '0':'0', '1':'1', '2':'2' }
-        shellcmd((
-            'pnacl-translate -ffunction-sections -c -arch x86-32-linux ' +
-            '-O{level} --pnacl-driver-append-LLC_FLAGS_EXTRA=-externalize ' +
-            '-o {obj} {pexe}'
-            ).format(level=opt_level_map[opt_level], obj=obj_llc, pexe=pexe),
+        shellcmd(['pnacl-translate',
+                  '-ffunction-sections',
+                  '-c',
+                  '-arch', 'x86-32-linux',
+                  '-O' + opt_level_map[opt_level],
+                  '--pnacl-driver-append-LLC_FLAGS_EXTRA=-externalize',
+                  '-o', obj_llc] +
+                 args.llc_args +
+                 [pexe],
                  echo=args.verbose)
         shellcmd((
             'objcopy --redefine-sym _start=_user_start {obj}'
@@ -186,11 +192,15 @@
             ).format(obj=obj_llc, sym=sym_llc), echo=args.verbose)
     if args.force or NewerThanOrNotThere(pexe, obj_sz) or \
             NewerThanOrNotThere(llvm2ice, obj_sz):
-        shellcmd((
-            '{l2i} -O{level} -bitcode-format=pnacl -disable-globals ' +
-            '-externalize -ffunction-sections {pexe} -o {asm}' +
-            (' --stats' if args.stats else '')
-            ).format(l2i=llvm2ice, level=opt_level, pexe=pexe, asm=asm_sz),
+        shellcmd([llvm2ice,
+                  '-O' + opt_level,
+                  '-bitcode-format=pnacl',
+                  '-disable-globals',
+                  '-externalize',
+                  '-ffunction-sections',
+                  '-o', asm_sz] +
+                 args.sz_args +
+                 [pexe],
                  echo=args.verbose)
         shellcmd((
             'llvm-mc -arch=x86 -x86-asm-syntax=intel -filetype=obj -o {obj} ' +