[LLD] Lack of REQUIRES causing test failures when not building with x86 support

If I build lld without x86 support (i.e. with "cmake -DLLVM_TARGETS_TO_BUILD=AArch64”) there are 117 tests that fail “make check-lld”. Upon examination, all are x86 related.

There are multiple (884) tests that have “REQUIRES:.*x86” in the tests directory. Was there a cunning plan regarding the use of REQUIRES that I couldn’t discern?

It seems that either 117 “REQUIRES” need to be added or 884 need to be removed.

Joel Jones

Hello Joel,

I don't think that there is a cunning plan with REQUIRES. I seem to
remember that there was some debate over the testing strategy and
platforms, but unfortunately I can't quickly find a link to it. In
summary:
- Much of the functionality of LLD is target independent, for example
linker script support.
- To write a test needs us to pick a target for these types of test
and X86 was chosen as this was the most likely target to be compiled
into build machines, for example the Arm and AArch64 buildbots include
the X86 backend.

I think that the missing 117 "REQUIRES" are an oversight, or
historical artefact, and I think patches would be welcome to add them
back in; a bot that doesn't build in the X86 backend is probably
needed to keep this maintained as it is easy to forget the REQUIRES.
However I think that if the goal is to test the majority of the
functionality of LLD it would be wise to compile in support for X86 as
much of the generic functionality will go untested.

Peter

From: llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org] On Behalf Of Peter
Smith via llvm-dev
Sent: Monday, June 04, 2018 11:53 AM
To: Joel Jones
Cc: llvm-dev
Subject: Re: [llvm-dev] [LLD] Lack of REQUIRES causing test failures when
not building with x86 support

Hello Joel,

I don't think that there is a cunning plan with REQUIRES. I seem to
remember that there was some debate over the testing strategy and
platforms, but unfortunately I can't quickly find a link to it. In
summary:
- Much of the functionality of LLD is target independent, for example
linker script support.
- To write a test needs us to pick a target for these types of test
and X86 was chosen as this was the most likely target to be compiled
into build machines, for example the Arm and AArch64 buildbots include
the X86 backend.

I think that the missing 117 "REQUIRES" are an oversight, or
historical artefact, and I think patches would be welcome to add them
back in; a bot that doesn't build in the X86 backend is probably
needed to keep this maintained as it is easy to forget the REQUIRES.

A tactic used in some of the LLVM libraries is to create target-specific
subdirectories. Tests that depend on a specific target go into the
corresponding subdirectory. A small bit of lit code in the config file
for the subdirectory will implicitly mark all tests UNSUPPORTED unless
the correct target support is available. This avoids having to remember
to add REQUIRES to the test, although you do still have to put it into
the correct subdirectory.
--paulr

In order to catch a missing “REQUIRES: x86”, it might be a good idea to set up a build bot without the x86 support.

There are some already, I have been caught out by that before on compiler changes; maybe one could have LLD added to their list of projects.

–paulr

There are some already, I have been caught out by that before on compiler changes; maybe one could have LLD added to their list of projects.

That sounds like a very good plan!