On Wed, May 2, 2018 at 4:59 AM, 朴素 <772847...@qq.com> wrote: > Thanks. > > If I remove some specific attributes, now I can think of the following > method.First of all, let me talk about my method. > > 1.Define target platforms that do not support attributes.such as def > TargetPower : TargetArch<["ppc", "ppc64", "ppc64le"]>; > > 2.Define TargetNotSupportedAttr class.such as class > TargetNotSupportedAttr<TargetArch target> ;
Why not make use of TargetSpecificAttr to mark the attributes that are specific to a target rather than marking the attributes not supported by a target? > 3.Using this approach, we need to modify the > cfe-4.0.1.src/utils/TableGen/ClangAttrEmitter.cpp file.Modifying the code in > the GenerateHasAttrSpellingStringSwitch function looks like this: > > if(Attr->isSubClassOf("TargetNotSupportedAttr")) { // add > > #define GenerateTargetNotSupportedAttrChecks > GenerateTargetSpecificAttrChecks // add > > const Record *R = Attr->getValueAsDef("Target"); // add > > std::vector<std::string> Arches = > R->getValueAsListOfStrings("Arches"); // add > > GenerateTargetNotSupportedAttrChecks(R, Arches, Test, nullptr); > // add > > TestStr = !Test.empty() ? Test + " ? " + " 0 :" + > llvm::itostr(Version) : "0"; // add > > } else if (Attr->isSubClassOf("TargetSpecificAttr")) > > 4.And for classes that inherit from TargetNotSupportedAttr<> class, we don’t > need to generate the attribute class, so add the following code in > EmitClangAttrClass > > if (R->getName() != "TargetSpecificAttr" && > > R->getName() != "TargetNotSupportedAttr” && //add > > SuperName.empty()) > > SuperName = R->getName(); > > > If I use this method, is it correct? It seems like it would work, yes. ~Aaron > > > > > ------------------ 原始邮件 ------------------ > 发件人: "Aaron Ballman"<aa...@aaronballman.com>; > 发送时间: 2018年4月29日(星期天) 凌晨3:07 > 收件人: "朴素"<772847...@qq.com>; > 抄送: "cfe-commits"<cfe-commits@lists.llvm.org>; > 主题: Re: If I want to disable certain attributes, such as "swiftcall", > isthere any way to do it now? > > On Fri, Apr 27, 2018 at 11:23 PM, 朴素 via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> As the title says,thanks. > > You could build a custom clang with specific attributes removed, but > there are no compiler flags that allow you to disable arbitrary > attributes like swiftcall. > > ~Aaron _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits