diff options
| author | Hans Wennborg <hans@hanshq.net> | 2014-01-14 19:35:09 +0000 |
|---|---|---|
| committer | Hans Wennborg <hans@hanshq.net> | 2014-01-14 19:35:09 +0000 |
| commit | c9bd88e6811fb622cde644a82eac41c0b02c00ee (patch) | |
| tree | 7c0c927099d178393a45099bde9b8520e5c81b20 /clang/test/lit.cfg | |
| parent | 87994450657e8b6294393db707945adbe9cb200e (diff) | |
| download | bcm5719-llvm-c9bd88e6811fb622cde644a82eac41c0b02c00ee.tar.gz bcm5719-llvm-c9bd88e6811fb622cde644a82eac41c0b02c00ee.zip | |
Remove the -cxx-abi command-line flag.
This makes the C++ ABI depend entirely on the target: MS ABI for -win32 triples,
Itanium otherwise. It's no longer possible to do weird combinations.
To be able to run a test with a specific ABI without constraining it to a
specific triple, new substitutions are added to lit: %itanium_abi_triple and
%ms_abi_triple can be used to get the current target triple adjusted to the
desired ABI. For example, if the test suite is running with the i686-pc-win32
target, %itanium_abi_triple will expand to i686-pc-mingw32.
Differential Revision: http://llvm-reviews.chandlerc.com/D2545
llvm-svn: 199250
Diffstat (limited to 'clang/test/lit.cfg')
| -rw-r--r-- | clang/test/lit.cfg | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/test/lit.cfg b/clang/test/lit.cfg index ee011c6d2ea..48b2fad1a9b 100644 --- a/clang/test/lit.cfg +++ b/clang/test/lit.cfg @@ -228,6 +228,25 @@ def getClangBuiltinIncludeDir(clang): # Ensure the result is an ascii string, across Python2.5+ - Python3. return str(dir.decode('ascii')) +def makeItaniumABITriple(triple): + m = re.match(r'(\w+)-(\w+)-(\w+)', triple) + if not m: + lit_config.fatal("Could not turn '%s' into Itanium ABI triple" % triple) + if m.group(3).lower() != 'win32': + # All non-win32 triples use the Itanium ABI. + return triple + return m.group(1) + '-' + m.group(2) + '-mingw32' + +def makeMSABITriple(triple): + m = re.match(r'(\w+)-(\w+)-(\w+)', triple) + if not m: + lit_config.fatal("Could not turn '%s' into MS ABI triple" % triple) + if m.group(3).lower() == 'win32': + # If the OS is win32, we're done. + return triple + # Otherwise, replace the OS part with Win32. + return m.group(1) + '-' + m.group(2) + '-win32' + config.substitutions.append( ('%clang_cc1', '%s -cc1 -internal-isystem %s' % (config.clang, getClangBuiltinIncludeDir(config.clang))) ) @@ -239,6 +258,8 @@ config.substitutions.append( ('%clangxx', ' ' + config.clang + ' --driver-mode=g++ ')) config.substitutions.append( ('%clang', ' ' + config.clang + ' ') ) config.substitutions.append( ('%test_debuginfo', ' ' + config.llvm_src_root + '/utils/test_debuginfo.pl ') ) +config.substitutions.append( ('%itanium_abi_triple', makeItaniumABITriple(config.target_triple)) ) +config.substitutions.append( ('%ms_abi_triple', makeMSABITriple(config.target_triple)) ) # FIXME: Find nicer way to prohibit this. config.substitutions.append( |

