This is an archive of the discontinued LLVM Phabricator instance.

Implementation of PS4 ABI, round 1
ClosedPublic

Authored by Sunil_Srivastava on Jan 26 2016, 3:19 PM.

Details

Summary

We are planning to upstream changes needed for maintaining PS4 ABI across future releases.

Unlike many other targets, we need to maintain, in most cases, strict object compatibility to a stable base (llvm 3.2 in this case) across releases, even in cases where the behavior differs from common x86-64 documentation or current practice.

To maintain such compatibility we are proposing to introduce TargetCXXABI::PS4. This will be a variant of GenericItaniumABI, but will remain compatible to llvm 3.2 in most cases, even if the GenericItaniumABI behavior changes. One such change has recently occurred in r257462, and is the motivation of taking up this task now.

This proposed change is the first step of this work. This is not a change in the compiler at all, but just an addition to a test for x86_64_pc-linux-gnu triple. Its purpose is to guard against inadvertent changes to the default x86_64 ABI by future changes, in regard to the bitfield layout.

The proposed change adds a new run line with x86_64_pc-linux-gnu, along with few variants of tests where they x86_64 rules differ from other triple used In the test.

The next round of changes will introduce the concept of the PS4 ABI in the compiler itself.

Diff Detail

Event Timeline

Sunil_Srivastava retitled this revision from to Implementation of PS4 ABI, round 1.
Sunil_Srivastava updated this object.
Sunil_Srivastava added a reviewer: rsmith.
Sunil_Srivastava added a subscriber: cfe-commits.
probinson added a subscriber: probinson.

Subscribed the reviewers of D14980, which had fixed the alignment-attribute layout bug.

Seems reasonable.

This revision was automatically updated to reflect the committed changes.