OLD | NEW |
1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
2 | 2 |
3 import argparse | 3 import argparse |
4 import os | 4 import os |
5 import subprocess | 5 import subprocess |
6 import sys | 6 import sys |
7 import tempfile | 7 import tempfile |
8 | 8 |
9 from utils import shellcmd | 9 from utils import shellcmd |
10 from utils import FindBaseNaCl | 10 from utils import FindBaseNaCl |
(...skipping 22 matching lines...) Expand all Loading... |
33 metavar='DRIVER', | 33 metavar='DRIVER', |
34 help='Driver program') | 34 help='Driver program') |
35 argparser.add_argument('--target', required=False, default='x8632', | 35 argparser.add_argument('--target', required=False, default='x8632', |
36 choices=arch_map.keys(), | 36 choices=arch_map.keys(), |
37 metavar='TARGET', | 37 metavar='TARGET', |
38 help='Translation target architecture.' + | 38 help='Translation target architecture.' + |
39 ' Default %(default)s.') | 39 ' Default %(default)s.') |
40 argparser.add_argument('-O', required=False, default='2', dest='optlevel', | 40 argparser.add_argument('-O', required=False, default='2', dest='optlevel', |
41 choices=['m1', '-1', '0', '1', '2'], | 41 choices=['m1', '-1', '0', '1', '2'], |
42 metavar='OPTLEVEL', | 42 metavar='OPTLEVEL', |
43 help='Optimization level ' + | 43 help='Optimization level for llc and Subzero ' + |
44 '(m1 and -1 are equivalent).' + | 44 '(m1 and -1 are equivalent).' + |
45 ' Default %(default)s.') | 45 ' Default %(default)s.') |
| 46 argparser.add_argument('--clang-opt', required=False, default=True, |
| 47 dest='clang_opt') |
46 argparser.add_argument('--mattr', required=False, default='sse2', | 48 argparser.add_argument('--mattr', required=False, default='sse2', |
47 dest='attr', choices=['sse2', 'sse4.1'], | 49 dest='attr', choices=['sse2', 'sse4.1'], |
48 metavar='ATTRIBUTE', | 50 metavar='ATTRIBUTE', |
49 help='Target attribute. Default %(default)s.') | 51 help='Target attribute. Default %(default)s.') |
50 argparser.add_argument('--sandbox', required=False, default=0, type=int, | 52 argparser.add_argument('--sandbox', required=False, default=0, type=int, |
51 dest='sandbox', | 53 dest='sandbox', |
52 help='Use sandboxing. Default "%(default)s".') | 54 help='Use sandboxing. Default "%(default)s".') |
53 argparser.add_argument('--prefix', required=True, | 55 argparser.add_argument('--prefix', required=True, |
54 metavar='SZ_PREFIX', | 56 metavar='SZ_PREFIX', |
55 help='String prepended to Subzero symbol names') | 57 help='String prepended to Subzero symbol names') |
(...skipping 29 matching lines...) Expand all Loading... |
85 target=args.target, sb='sb' if args.sandbox else 'nat', | 87 target=args.target, sb='sb' if args.sandbox else 'nat', |
86 opt=args.optlevel, attr=args.attr) | 88 opt=args.optlevel, attr=args.attr) |
87 base, ext = os.path.splitext(arg) | 89 base, ext = os.path.splitext(arg) |
88 if ext == '.ll': | 90 if ext == '.ll': |
89 bitcode = arg | 91 bitcode = arg |
90 else: | 92 else: |
91 # Use pnacl-clang and pnacl-opt to produce PNaCl bitcode. | 93 # Use pnacl-clang and pnacl-opt to produce PNaCl bitcode. |
92 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') | 94 bitcode_nonfinal = os.path.join(args.dir, base + '.' + key + '.bc') |
93 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') | 95 bitcode = os.path.join(args.dir, base + '.' + key + '.pnacl.ll') |
94 shellcmd(['{bin}/pnacl-clang'.format(bin=bindir), | 96 shellcmd(['{bin}/pnacl-clang'.format(bin=bindir), |
95 '-O2', '-c', arg, '-o', bitcode_nonfinal]) | 97 ('-O2' if args.clang_opt else '-O0'), '-c', arg, |
| 98 '-o', bitcode_nonfinal]) |
96 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), | 99 shellcmd(['{bin}/pnacl-opt'.format(bin=bindir), |
97 '-pnacl-abi-simplify-preopt', | 100 '-pnacl-abi-simplify-preopt', |
98 '-pnacl-abi-simplify-postopt', | 101 '-pnacl-abi-simplify-postopt', |
99 '-pnaclabi-allow-debug-metadata', | 102 '-pnaclabi-allow-debug-metadata', |
100 bitcode_nonfinal, '-S', '-o', bitcode]) | 103 bitcode_nonfinal, '-S', '-o', bitcode]) |
101 | 104 |
102 base_sz = '{base}.{key}'.format(base=base, key=key) | 105 base_sz = '{base}.{key}'.format(base=base, key=key) |
103 asm_sz = os.path.join(args.dir, base_sz + '.sz.s') | 106 asm_sz = os.path.join(args.dir, base_sz + '.sz.s') |
104 obj_sz = os.path.join(args.dir, base_sz + '.sz.o') | 107 obj_sz = os.path.join(args.dir, base_sz + '.sz.o') |
105 obj_llc = os.path.join(args.dir, base_sz + '.llc.o') | 108 obj_llc = os.path.join(args.dir, base_sz + '.llc.o') |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 sb_native_args = (['-O0', '--pnacl-allow-native', '-arch', 'x8632', | 161 sb_native_args = (['-O0', '--pnacl-allow-native', '-arch', 'x8632', |
159 '-Wn,-defsym=__Sz_AbsoluteZero=0'] | 162 '-Wn,-defsym=__Sz_AbsoluteZero=0'] |
160 if args.sandbox else | 163 if args.sandbox else |
161 ['-g', '-m32', '-lm', '-lpthread', | 164 ['-g', '-m32', '-lm', '-lpthread', |
162 '-Wl,--defsym=__Sz_AbsoluteZero=0']) | 165 '-Wl,--defsym=__Sz_AbsoluteZero=0']) |
163 shellcmd([compiler, args.driver] + objs + | 166 shellcmd([compiler, args.driver] + objs + |
164 ['-o', os.path.join(args.dir, args.output)] + sb_native_args) | 167 ['-o', os.path.join(args.dir, args.output)] + sb_native_args) |
165 | 168 |
166 if __name__ == '__main__': | 169 if __name__ == '__main__': |
167 main() | 170 main() |
OLD | NEW |