echristo added a comment. In D127812#3616603 <https://reviews.llvm.org/D127812#3616603>, @danielkiss wrote:
> In D127812#3602688 <https://reviews.llvm.org/D127812#3602688>, @aaron.ballman > wrote: > >> In D127812#3602645 <https://reviews.llvm.org/D127812#3602645>, @erichkeane >> wrote: >> >>> In D127812#3601476 <https://reviews.llvm.org/D127812#3601476>, @danielkiss >>> wrote: >>> >>>> Your understanding is correct. `target` attribute has two usage model. One >>>> is just redefine the to be used codegen options, this is used already >>>> widely for Arm and AArch64. The other use of the `target` attribute is the >>>> multi versioning and the rational for the `target_version` attribute is >>>> the easier distinction between the two usage mode, also not to break any >>>> code out there by changing the behaviour of an attribute. >>> >>> I don't think differentiating the uses here is a good idea. I think it >>> would have been a GREAT idea about 10 years ago, but that ship has already >>> sailed once GCC started using it that way however. We should be keeping >>> the current behavior, otherwise we're going to have a horrible mix of >>> target/target_version working inconsistently between platforms. >> >> That largely is my concern as well. The existing behavior of `target` is >> just that -- the existing behavior. I think deviating from that existing >> behavior will be confusing in practice. Adding additional attributes doesn't >> improve that confusion because users then have to know to decide between two >> very similar attributes, which means they then need to educate themselves on >> the differences between them. If we're going to push them towards the >> documentation to correctly use the attribute anyway, that's basically the >> same situation they're in today with the confusing dual behavior of `target`. > > We started with the ACLE to be sure the platforms and compilers will > implement the same for Arm targets so make the developers life easier with a > consistent behaviour on Arm platforms. Users of the attributes anyway need to > aware of the architecture differences. Like `-mtune` is different between > Arm/AArch64 and x86. And that's been frustrating for years too and would have been nice had aarch64 not followed it :) That said, my desire here is source compatibility between open source compilers - I think that we need at least source compatibility with gcc and then we can go from there. ================ Comment at: llvm/lib/Target/AArch64/AArch64.td:74 +def FeatureFMV : SubtargetFeature<"fmv", "HasFMV", "true", + "Enable Function Multi Versioning support.">; ---------------- What is this for? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127812/new/ https://reviews.llvm.org/D127812 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits