Index: llvm/include/llvm/Transforms/IPO/Attributor.h =================================================================== --- llvm/include/llvm/Transforms/IPO/Attributor.h +++ llvm/include/llvm/Transforms/IPO/Attributor.h @@ -2017,6 +2017,9 @@ /// This function should return the name of the AbstractAttribute virtual const std::string getName() const = 0; + + /// This function should return the address of the ID of the AbstractAttribute + virtual const char *getIdAddr() const = 0; ///} /// Allow the Attributor access to the protected methods. @@ -2134,6 +2137,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAReturnedValues"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2155,6 +2161,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANoUnwind"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2176,6 +2185,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANoSync"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2198,6 +2210,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANonNull"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2220,6 +2235,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANoRecurse"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2242,6 +2260,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAWillReturn"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2271,6 +2292,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAUndefinedBehavior"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2302,6 +2326,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAReachability"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2324,6 +2351,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANoAlias"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2346,6 +2376,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANoFree"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2368,6 +2401,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANoReturn"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2425,6 +2461,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAIsDead"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; @@ -2618,6 +2657,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AADereferenceable"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2639,6 +2681,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAAlign"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Create an abstract attribute view for the position \p IRP. static AAAlign &createForPosition(const IRPosition &IRP, Attributor &A); @@ -2696,6 +2741,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AANoCapture"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2717,6 +2765,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAValueSimplify"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2737,6 +2788,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAHeapToStack"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2773,6 +2827,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAPrivatizablePtr"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2827,6 +2884,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAMemoryBehavior"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -2988,6 +3048,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAMemoryLocation"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; }; @@ -3036,6 +3099,9 @@ /// See AbstractAttribute::getName() const std::string getName() const override { return "AAValueConstantRange"; } + /// See AbstractAttribute::getIdAddr() + const char *getIdAddr() const override { return &ID; } + /// Unique ID (due to the unique address) static const char ID; };