[PATCH] D55527: Normalize GlobalDecls when used with CPUDispatch
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 11 12:44:30 PST 2018
aaron.ballman added inline comments.
================
Comment at: include/clang/Basic/Attr.td:896
let AdditionalMembers = [{
- IdentifierInfo *getCPUName(unsigned Index) const {
- return *(cpus_begin() + Index);
+ // gets the ordinal of the requested CPU name, or 0 if it isn't in the cpu
+ // list.
----------------
gets -> Gets
================
Comment at: include/clang/Basic/Attr.td:901
+ for (const IdentifierInfo *II : cpus()) {
+ if (II->getName() == Name)
+ return Ord;
----------------
`if (II->isStr(Name))`
================
Comment at: include/clang/Basic/Attr.td:908
+
+ IdentifierInfo *getCPUName(unsigned Ordinal) const {
+ assert(Ordinal > 0 && "Invalid Ordinal");
----------------
Can this return a `const IdentifierInfo *` instead?
================
Comment at: lib/CodeGen/CodeGenModule.cpp:2141
+ if (Global->hasAttr<CPUSpecificAttr>() && GD.getMultiVersionOrdinal() == 0) {
+ auto *Spec = Global->getAttr<CPUSpecificAttr>();
+ for (unsigned I = 1; I <= Spec->cpus_size(); ++I)
----------------
Rather than use `hasAttr<>` followed by `getAttr<>`, just get the attribute and test it for null.
Also, `const auto *`.
================
Comment at: lib/CodeGen/CodeGenModule.cpp:2442
// Requires multiple emits.
+ auto *Spec = FD->getAttr<CPUSpecificAttr>();
+ for (unsigned I = 1; I <= Spec->cpus_size(); ++I)
----------------
`const auto *`
================
Comment at: lib/CodeGen/CodeGenModule.cpp:2562
+ for (GlobalDecl GD : MultiVersionFuncs) {
+ const FunctionDecl *FD = cast<FunctionDecl>(GD.getDecl());
+ assert(FD && FD->isMultiVersion() && "Not a multiversion function?");
----------------
`const auto *`
================
Comment at: lib/CodeGen/CodeGenModule.cpp:2584
+ llvm::Type *&DeclTy) {
+ const FunctionDecl *FD = cast<FunctionDecl>(GD.getDecl());
QualType CanonTy = Context.getCanonicalType(FD->getType());
----------------
`const auto *`
================
Comment at: lib/CodeGen/CodeGenModule.cpp:2612
const TargetInfo &Target = getTarget();
- unsigned Index = 0;
+ const FunctionDecl *FD = cast<FunctionDecl>(GD.getDecl());
+ assert(FD->isCPUDispatchMultiVersion() &&
----------------
`const auto *`
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D55527/new/
https://reviews.llvm.org/D55527
More information about the cfe-commits
mailing list