nikic added a comment. In D86310#4495825 <https://reviews.llvm.org/D86310#4495825>, @hvdijk wrote:
> A thought occurs: in older versions of LLVM, the data layout mechanism worked > differently and permitted targets to declare that they supported multiple > different data layout strings, by overriding `isCompatibleDataLayout`. This > mechanism was removed in D67631 <https://reviews.llvm.org/D67631>. If we > reinstate that, we can have the X86 target declare that it "supports" data > layout strings with and without the `-i128:128`, where by "supports", I mean > the code continues to not generally work in the same way it does not > generally work now, but the specific limited cases that do work continue to > work exactly the same ABI-incompatible way. This would have the same result > of bug-for-bug compatibility with existing modules, but in what I suspect > would be a significantly simpler way than by going through the module and > adding explicit alignments everywhere. While I would still prefer to give up > on that compatibility, if it is a hard requirement, and if this would be an > alternative way of achieving it, I might possibly be able to update this > patch to do just that. Would this be acceptable? The main problem with that is that we can't have multiple data layouts for one module, so linking old and new bitcode together would fail. But maybe that's exactly what we want -- after all, it is incompatible. Even if we "correctly" upgraded to preserve behavior of the old bitcode, it would still be incompatible with the new bitcode if i128 crosses the ABI boundary (explicitly or implicitly). CHANGES SINCE LAST ACTION https://reviews.llvm.org/D86310/new/ https://reviews.llvm.org/D86310 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits