Quick and dirty support for Linux i386 (32-bit)


(Nick Wellnhofer) #1

Hello swift-dev,

When I started to work on an unrelated pull request, I noticed that Linux i386 isn't supported yet. This made me curious, and it turned out that 32-bit support was easy to add. Here's a quick and dirty commit:

https://github.com/nwellnhof/swift/commit/1a5962c890e43f115fc5d629a7b2ec108e1f489a

For the most part, I simply replaced x86_64 with i386, breaking the 64-bit build.

I only got six test failures:

Failing Tests (6):
     Swift :: Driver/Dependencies/one-way-external.swift
     Swift :: Driver/subcommands.swift
     Swift :: IRGen/objc_simd.sil
     Swift :: Misc/expression_too_complex.swift
     Swift :: Prototypes/FloatingPoint.swift
     Swift :: SILAnalysis/callgraph.sil

Note that the LLVM debug build fails on i386 due to insufficient (virtual) memory when linking. Linking with gold also failed, but gold with --no-mmap-output-file might work.

Also note that I have no intentions to further pursue this work, but a few non-trivial parts of the patch might be helpful to the community.

Regards,
Nick