[PATCH] Improve big-endian support for ARM and AArch64

Charlie Turner charlie.turner at arm.com
Tue Sep 30 05:31:29 PDT 2014

Hi Renato,

> ** First, the processes-relocations.ll file shouldn't have all archs, since some bots only build one or two back-ends:
> [snip]
> So, an XFAIL on hexagon is probably a good idea.

I now realize why hexagon was omitted from the original chain of if/else comparisons. I thought it was probably an oversight, but it doesn't make sense to add a test for this target, since there's no object emission. I have updated my refactoring to not handle the hexagon case, since it's not handled in the original code.

> ** Second, Windows machines failed, since they don't support Dwarf:
> http://bb.pgr.jp/builders/ninja-x64-msvc-RA-centos6/builds/6585
> Eric hinted to look at nearby tests and make sure to follow the same pattern.

My test (processes-relocations.ll) appears to have passed from that link's build log (http://bb.pgr.jp/builders/ninja-x64-msvc-RA-centos6/builds/6585/steps/test_all/logs/stdio)

PASS: LLVM :: DebugInfo/processes-relocations.ll (14176 of 19516)

I have noted that in each arch-specific subdir, there are tests assuming dwarf emission, and they're not using %llc_dwarf since they want to pass their own -mtriple.

> ** Third, i686 has an error::
> http://bb.pgr.jp/builders/clang-i686-cygwin-RA-centos6/builds/10472/steps/test_llvmclang/logs/LLVM%20%3A%3A%20DebugInfo__processes-relocations.ll

That failed because you removed the -mtriple argument to llc (the -linux part forces ELF IIUC), which caused llc to default to COFF emission. 

> Though, i386 works, at least on FreeBSD (where XFAIL i386 actually passes):
> http://llvm-amd64.freebsd.your.org/b/builders/clang-i386-freebsd/builds/23659/steps/check-all.1/logs/stdio

As before, the -mtriple was removed from the invocation. The reason this one passed is because ELF is the default on a FreeBSD host, whereas the i686 above defaulted to COFF, since it was Cygwin host.

> A better alternative is to split that test into multiple files, one on each arch's directory (at least ARM, AArch64 and x86_64).

The attached patch does this for all the architectures dealt with in my refactoring. I can provide the next two patches of the original set if this one is OK.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Refactor-the-RelocVisitor-visit-method.patch
Type: application/octet-stream
Size: 18217 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140930/61bdb22f/attachment.obj>

More information about the llvm-commits mailing list