[cfe-dev] [RFC] Fix Clang test case failure on ARM

Eli Friedman eli.friedman at gmail.com
Sun Apr 29 00:07:50 PDT 2012


On Sat, Apr 28, 2012 at 9:10 PM, 陳韋任 <chenwj at iis.sinica.edu.tw> wrote:
> Hi all,
>
>  I am a LLVM 3.1 tester and running tests on ARM. A few clang test failures
> can be avoided by adding target-specific triple, but I am not sure if this is
> the correct solution.
>
> 1. Use "-triple x86_64-none-linux-gnu" makes failures below disappered. If no
>   one against this solution, I'll prepare a patch.
>
>  Clang :: CodeGenCXX/compound-literals.cpp
>  Clang :: CodeGenCXX/copy-constructor-elim-2.cpp
>  Clang :: CodeGenCXX/cxx0x-initializer-references.cpp
>  Clang :: CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp
>  Clang :: CodeGenCXX/virt-call-offsets.cpp
>  Clang :: CodeGenCXX/x86-64-abi-sret-vs-2word-struct-param.cpp
>  Clang :: CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp

Often for C++, FileCheck tests over IR fail to match because of the
slightly different C++ ABI rules (among other things, constructors
have a slightly different signature).  Often it's easy to fix the
tests to work on all platforms; if it's straightforward, please do,
otherwise specifying a triple is fine.

> 2. Use "-triple x86_64-none-linux-gnu" makes failure below disappered, too.
>   But Chandler think tests under CXX/ should be platform independent. We
>   either move p15-inclass.cpp to CodeGenCXX/ , or make "linkonce_odr"
>   ptional in FileCheck so it's not platform dependent.

Err, is that why it isn't matching?  I would have assumed that the
'void' isn't matching rather than the linkonce_odr.

Moving the test to CodeGenCXX is independent of that, but that would
be okay, I guess.

>  Clang :: CXX/special/class.copy/p15-inclass.cpp
>
> 3. Although "-fshort-wchar" makes the error below disappered, Chandler think
>   the test itslef is NOT fulfill the C++ standard, so this could be a bug
>   in the test not in clang.

Yes... that's just a bug in the test; I didn't realize some platforms
define wchar_t as 'long'.  Probably just specifying a triple is the
right thing to do here.

>  Clang :: CXX/conv/conv.prom/p2.cpp
>
> 4. James suggust me to raise a PR for the test case below. How this test case
>   is ran and what the error message is can be found in [1].
>
>  Sema/arm-neon-types.c

Yes, please file; that's a bit mysterious.

-Eli




More information about the cfe-dev mailing list