HomePhabricator

[mips] The default ABI depends on the CPU not the Arch on MTI and IMG vendor…

Description

[mips] The default ABI depends on the CPU not the Arch on MTI and IMG vendor triples.

Summary:
32-bit CPU's default to O32. 64-bit CPU's default to N64. The default CPU
(mips32r2/mips64r2) still depends on the arch so there's no functional
change when the CPU isn't specified but commands like:

clang -target mips-mti-linux-gnu -mips64r2

will now default to a 64-bit ABI like our gcc toolchains do* instead of
asserting in the backend**.

Other vendors (including Triple::UnknownVendor) still derive the default
ABI from the arch.

  • Although not the same one as our gcc toolchains, clang has historically defaulted to N64 where gcc defaults to N32.
    • Mixing O32 and a 64-bit CPU causing assertions is a long-standing bug.

Reviewers: atanasyan

Subscribers: sdardis, cfe-commits

Differential Revision: http://reviews.llvm.org/D21016