[llvm] r174012 - Revert for now:

Bill Wendling isanbard at gmail.com
Wed Jan 30 17:04:51 PST 2013


Author: void
Date: Wed Jan 30 19:04:51 2013
New Revision: 174012

URL: http://llvm.org/viewvc/llvm-project?rev=174012&view=rev
Log:
Revert for now:

--- Reverse-merging r174010 into '.':
U    include/llvm/IR/Attributes.h
U    lib/IR/Verifier.cpp
U    lib/IR/Attributes.cpp


Modified:
    llvm/trunk/include/llvm/IR/Attributes.h
    llvm/trunk/lib/IR/Attributes.cpp
    llvm/trunk/lib/IR/Verifier.cpp

Modified: llvm/trunk/include/llvm/IR/Attributes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Attributes.h?rev=174012&r1=174011&r2=174012&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Attributes.h (original)
+++ llvm/trunk/include/llvm/IR/Attributes.h Wed Jan 30 19:04:51 2013
@@ -113,7 +113,8 @@ public:
   //===--------------------------------------------------------------------===//
 
   /// \brief Return a uniquified Attribute object.
-  static Attribute get(LLVMContext &Context, AttrKind Kind, Constant *Val = 0);
+  static Attribute get(LLVMContext &Context, AttrKind Kind);
+  static Attribute get(LLVMContext &Context, AttrBuilder &B);
 
   /// \brief Return a uniquified Attribute object that has the specific
   /// alignment set.

Modified: llvm/trunk/lib/IR/Attributes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Attributes.cpp?rev=174012&r1=174011&r2=174012&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Attributes.cpp (original)
+++ llvm/trunk/lib/IR/Attributes.cpp Wed Jan 30 19:04:51 2013
@@ -30,15 +30,24 @@ using namespace llvm;
 // Attribute Construction Methods
 //===----------------------------------------------------------------------===//
 
-Attribute Attribute::get(LLVMContext &Context, AttrKind Kind,
-                         Constant *Val) {
-  if (Kind == None) return Attribute();
+Attribute Attribute::get(LLVMContext &Context, AttrKind Kind) {
+  AttrBuilder B;
+  return Attribute::get(Context, B.addAttribute(Kind));
+}
+
+Attribute Attribute::get(LLVMContext &Context, AttrBuilder &B) {
+  // If there are no attributes, return an empty Attribute class.
+  if (!B.hasAttributes())
+    return Attribute();
+
+  assert(std::distance(B.begin(), B.end()) == 1 &&
+         "The Attribute object should represent one attribute only!");
 
   // Otherwise, build a key to look up the existing attributes.
   LLVMContextImpl *pImpl = Context.pImpl;
   FoldingSetNodeID ID;
-  ID.AddInteger(Kind);
-  ID.AddPointer(Val);
+  ConstantInt *CI = ConstantInt::get(Type::getInt64Ty(Context), B.Raw());
+  ID.AddPointer(CI);
 
   void *InsertPoint;
   AttributeImpl *PA = pImpl->AttrsSet.FindNodeOrInsertPos(ID, InsertPoint);
@@ -46,9 +55,7 @@ Attribute Attribute::get(LLVMContext &Co
   if (!PA) {
     // If we didn't find any existing attributes of the same shape then create a
     // new one and insert it.
-    PA = (!Val) ?
-      new AttributeImpl(Context, Kind) :
-      new AttributeImpl(Context, Kind, Val);
+    PA = new AttributeImpl(Context, CI);
     pImpl->AttrsSet.InsertNode(PA, InsertPoint);
   }
 
@@ -57,14 +64,14 @@ Attribute Attribute::get(LLVMContext &Co
 }
 
 Attribute Attribute::getWithAlignment(LLVMContext &Context, uint64_t Align) {
-  return get(Context, Attribute::Alignment,
-             ConstantInt::get(Type::getInt64Ty(Context), Align));
+  AttrBuilder B;
+  return get(Context, B.addAlignmentAttr(Align));
 }
 
 Attribute Attribute::getWithStackAlignment(LLVMContext &Context,
                                            uint64_t Align) {
-  return get(Context, Attribute::StackAlignment,
-             ConstantInt::get(Type::getInt64Ty(Context), Align));
+  AttrBuilder B;
+  return get(Context, B.addStackAlignmentAttr(Align));
 }
 
 //===----------------------------------------------------------------------===//

Modified: llvm/trunk/lib/IR/Verifier.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Verifier.cpp?rev=174012&r1=174011&r2=174012&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Verifier.cpp (original)
+++ llvm/trunk/lib/IR/Verifier.cpp Wed Jan 30 19:04:51 2013
@@ -745,9 +745,7 @@ void Verifier::VerifyFunctionAttrs(Funct
   AttrBuilder NotFn(Attrs, AttributeSet::FunctionIndex);
   NotFn.removeFunctionOnlyAttrs();
   Assert1(!NotFn.hasAttributes(), "Attribute '" +
-          AttributeSet::get(V->getContext(),
-                            AttributeSet::FunctionIndex,
-                            NotFn).getAsString(AttributeSet::FunctionIndex) +
+          Attribute::get(V->getContext(), NotFn).getAsString() +
           "' do not apply to the function!", V);
 
   // Check for mutually incompatible attributes.





More information about the llvm-commits mailing list