[sanitizers] Make it possible to XFAIL on the effective target, not just the default.
authorDaniel Sanders <daniel.sanders@imgtec.com>
Tue, 9 Aug 2016 11:50:53 +0000 (11:50 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Tue, 9 Aug 2016 11:50:53 +0000 (11:50 +0000)
commitdc213305e9a81eb8062494b4ccff3d45dc74d053
treec9613fcc0ee5af95dbd9fc6bcdfbf47259f2ad89
parent16a5930803d80fc4eb48c1ac799d77eae838d987
[sanitizers] Make it possible to XFAIL on the effective target, not just the default.

Summary:
The triple is not the right thing to XFAIL on since LIT only sees the default
triple and not the effective triple chosen by any -target option in the RUN
directives. This discrepancy is shown in the table below:

  Default Triple   | Options                           | XFAIL  | LIT's expected result | Desired expectation
  =================+===================================+========+=======================+====================
  mips-linux-gnu   | -target mips-linux-gnu            |        | Pass                  | Pass
  mips-linux-gnu   | -target mips64-linux-gnu -mabi=64 |        | Pass                  | Pass
  mips-linux-gnu   | -target mips-linux-gnu            | mips   | Fail                  | Fail
  mips-linux-gnu   | -target mips64-linux-gnu -mabi=64 | mips   | Fail                  | Fail/Pass* (debatable**)
  mips-linux-gnu   | -target mips-linux-gnu            | mips-  | Fail                  | Fail
  mips-linux-gnu   | -target mips64-linux-gnu -mabi=64 | mips-  | Fail                  | Pass*
  mips-linux-gnu   | -target mips-linux-gnu            | mips64 | Pass                  | Pass
  mips-linux-gnu   | -target mips64-linux-gnu -mabi=64 | mips64 | Pass                  | Fail*
  mips64-linux-gnu | -target mips-linux-gnu            |        | Pass                  | Pass
  mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 |        | Pass                  | Pass
  mips64-linux-gnu | -target mips-linux-gnu            | mips   | Fail                  | Fail*
  mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips   | Fail                  | Fail/Pass (debatable**)
  mips64-linux-gnu | -target mips-linux-gnu            | mips-  | Pass                  | Fail*
  mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips-  | Pass                  | Pass
  mips64-linux-gnu | -target mips-linux-gnu            | mips64 | Fail                  | Pass*
  mips64-linux-gnu | -target mips64-linux-gnu -mabi=64 | mips64 | Fail                  | Fail
  x64_64-linux-gnu | -target i386-linux-gnu            |        | Pass                  | Pass
  x64_64-linux-gnu | -target x86_64-linux-gnu          |        | Pass                  | Pass
  x64_64-linux-gnu | -target i386-linux-gnu            | i386   | Pass                  | Fail*
  x64_64-linux-gnu | -target x86_64-linux-gnu          | i386   | Pass                  | Pass
  x64_64-linux-gnu | -target i386-linux-gnu            | x86_64 | Fail                  | Pass
  x64_64-linux-gnu | -target x86_64-linux-gnu          | x86_64 | Fail                  | Fail*
  * These all differ from LIT's current behaviour.
  ** People's expectations vary depending on whether they know that LIT does a
   substring match on the default triple or think it's an exact match on an
   architecture.

This patch adds "target-is-${target_arch}" to the available features list and
updates the mips XFAIL's to use them. XFAIL'ing on these features will
correctly account for the target being tested. Making the table:

  Options                           | XFAIL            | LIT's expected result
  ==================================+==================+======================
  -target mips-linux-gnu            |                  | Pass
  -target mips64-linux-gnu -mabi=64 |                  | Pass
  -target mips-linux-gnu            | target-is-mips   | Fail
  -target mips64-linux-gnu -mabi=64 | target-is-mips   | Pass
  -target mips-linux-gnu            | target-is-mips64 | Pass
  -target mips64-linux-gnu -mabi=64 | target-is-mips64 | Fail
  -target i386-linux-gnu            |                  | Pass
  -target x86_64-linux-gnu          |                  | Pass
  -target i386-linux-gnu            | target-is-i386   | Fail
  -target x86_64-linux-gnu          | target-is-i386   | Pass
  -target i386-linux-gnu            | target-is-x86_64 | Pass
  -target x86_64-linux-gnu          | target-is-x86_64 | Fail

Reviewers: probinson

Subscribers: probinson, kubabrecka, llvm-commits, samsonov

Differential Revision: https://reviews.llvm.org/D22802

llvm-svn: 278116
compiler-rt/docs/TestingGuide.rst [new file with mode: 0644]
compiler-rt/test/asan/TestCases/Linux/local_alias.cc
compiler-rt/test/asan/TestCases/Linux/odr-violation.cc
compiler-rt/test/lit.common.configured.in
compiler-rt/test/tsan/ignore_lib4.cc
compiler-rt/test/tsan/longjmp.cc
compiler-rt/test/tsan/longjmp2.cc
compiler-rt/test/tsan/longjmp3.cc
compiler-rt/test/tsan/longjmp4.cc
compiler-rt/test/tsan/map32bit.cc
compiler-rt/test/tsan/signal_longjmp.cc