[test] On Mac, don't try to use result of sysctl command if calling it failed.

If sysctl is not found at all, let the usual exception propogate
so that the user can fix their env. If it fails because of the
permissions required to read the property then print a warning
and continue.

Differential Revision: https://reviews.llvm.org/D72278
This commit is contained in:
David Spickett 2020-01-13 13:35:57 +00:00
parent c5e9c8b1df
commit 239643df5f

View File

@ -324,15 +324,18 @@ llvm_config.feature_config(
('--has-global-isel', {'ON': 'global-isel'})])
if 'darwin' == sys.platform:
try:
sysctl_cmd = subprocess.Popen(['sysctl', 'hw.optional.fma'],
stdout=subprocess.PIPE)
except OSError:
print('Could not exec sysctl')
result = sysctl_cmd.stdout.read().decode('ascii')
if -1 != result.find('hw.optional.fma: 1'):
config.available_features.add('fma3')
sysctl_cmd.wait()
cmd = ['sysctl', 'hw.optional.fma']
sysctl_cmd = subprocess.Popen(cmd, stdout=subprocess.PIPE)
# Non zero return, probably a permission issue
if sysctl_cmd.wait():
print(
"Warning: sysctl exists but calling \"{}\" failed, defaulting to no fma3.".format(
" ".join(cmd)))
else:
result = sysctl_cmd.stdout.read().decode('ascii')
if 'hw.optional.fma: 1' in result:
config.available_features.add('fma3')
# .debug_frame is not emitted for targeting Windows x64.
if not re.match(r'^x86_64.*-(windows-gnu|windows-msvc)', config.target_triple):