[AIX][clang/test] Set/propagate AIXTHREAD_STK for AIX

Some tests perform deep recursion, which requires a larger pthread stack
size than the relatively low default of 192 KiB for 64-bit processes on
AIX. The `AIXTHREAD_STK` environment variable provides a non-intrusive
way to request a larger pthread stack size for the tests. The required
pthread stack size depends on the build configuration.

A 4 MiB default is generous compared to the 512 KiB of macOS; however,
it is known that some compilers on AIX produce code that uses
comparatively more stack space.

This patch expands the solution from D65688 to apply to all Clang LIT
tests.

This also reverts commit c3c75d805c,
"[clang][test] Mark test arm-float-abi-lto.c unsupported on AIX".

The problem was caused by the test running up against the per-thread
stack limit on AIX. This is resolved by having the tests run with
`AIXTHREAD_STK` set for 4 MiB.

Reviewed By: xingxue

Differential Revision: https://reviews.llvm.org/D129165
This commit is contained in:
Hubert Tong 2022-07-08 18:30:48 -04:00
parent e10e120cea
commit bd8b55e609
3 changed files with 10 additions and 14 deletions

View File

@ -1,5 +1,3 @@
// FIXME: Produces a segmentation fault on AIX after the introduction of opaque pointers (D125847).
// UNSUPPORTED: system-aix
// REQUIRES: arm-registered-target
// RUN: %clang --target=arm-none-eabi -mcpu=cortex-m33 -mfloat-abi=hard -O1 %s -S -o - -emit-llvm -DCALL_LIB -DDEFINE_LIB | FileCheck %s

View File

@ -1,12 +0,0 @@
import platform
# Some tests perform deep recursion, which requires a larger pthread stack size
# than the relatively low default of 192 KiB for 64-bit processes on AIX. The
# `AIXTHREAD_STK` environment variable provides a non-intrusive way to request
# a larger pthread stack size for the tests. Various applications and runtime
# libraries on AIX use a default pthread stack size of 4 MiB, so we will use
# that as a default value here.
if 'AIXTHREAD_STK' in os.environ:
config.environment['AIXTHREAD_STK'] = os.environ['AIXTHREAD_STK']
elif platform.system() == 'AIX':
config.environment['AIXTHREAD_STK'] = '4194304'

View File

@ -264,3 +264,13 @@ if 'aix' in config.target_triple:
'/ASTMerge/anonymous-fields', '/ASTMerge/injected-class-name-decl'):
exclude_unsupported_files_for_aix(config.test_source_root + directory)
# Some tests perform deep recursion, which requires a larger pthread stack size
# than the relatively low default of 192 KiB for 64-bit processes on AIX. The
# `AIXTHREAD_STK` environment variable provides a non-intrusive way to request
# a larger pthread stack size for the tests. Various applications and runtime
# libraries on AIX use a default pthread stack size of 4 MiB, so we will use
# that as a default value here.
if 'AIXTHREAD_STK' in os.environ:
config.environment['AIXTHREAD_STK'] = os.environ['AIXTHREAD_STK']
elif platform.system() == 'AIX':
config.environment['AIXTHREAD_STK'] = '4194304'