OSDN Git Service

PR400 phase 1 implementation feedback.
authorChristopher Lamb <christopher.lamb@gmail.com>
Sun, 22 Apr 2007 22:22:02 +0000 (22:22 +0000)
committerChristopher Lamb <christopher.lamb@gmail.com>
Sun, 22 Apr 2007 22:22:02 +0000 (22:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36354 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Instructions.h
lib/Bytecode/Reader/Reader.cpp

index 61d0efa..236a1fd 100644 (file)
@@ -255,8 +255,7 @@ public:
   /// getAlignment - Return the alignment of the access that is being performed
   ///
   unsigned getAlignment() const {
-    signed Log2AlignVal = ((SubclassData>>1)-1);
-    return ((Log2AlignVal < 0) ? 0 : 1<<Log2AlignVal);
+    return (1 << (SubclassData>>1)) >> 1;
   }
   
   void setAlignment(unsigned Align);
@@ -331,8 +330,7 @@ public:
   /// getAlignment - Return the alignment of the access that is being performed
   ///
   unsigned getAlignment() const {
-    signed Log2AlignVal = ((SubclassData>>1)-1);
-    return ((Log2AlignVal < 0) ? 0 : 1<<Log2AlignVal);
+    return (1 << (SubclassData>>1)) >> 1;
   }
   
   void setAlignment(unsigned Align);
index 7ac784e..98ed57e 100644 (file)
@@ -834,9 +834,8 @@ void BytecodeReader::ParseInstruction(SmallVector<unsigned, 8> &Oprnds,
     case 62: {   // attributed load
         if (Oprnds.size() != 2 || !isa<PointerType>(InstTy))
           error("Invalid attributed load instruction!");
-        signed Log2AlignVal = ((Oprnds[1]>>1)-1);
         Result = new LoadInst(getValue(iType, Oprnds[0]), "", (Oprnds[1] & 1),
-                              ((Log2AlignVal < 0) ? 0 : 1<<Log2AlignVal));
+                              (1 << (Oprnds[1]>>1)) >> 1);
         break;
       }
     case Instruction::Load:
@@ -850,10 +849,9 @@ void BytecodeReader::ParseInstruction(SmallVector<unsigned, 8> &Oprnds,
 
         Value *Ptr = getValue(iType, Oprnds[1]);
         const Type *ValTy = cast<PointerType>(Ptr->getType())->getElementType();
-        signed Log2AlignVal = ((Oprnds[2]>>1)-1);
         Result = new StoreInst(getValue(getTypeSlot(ValTy), Oprnds[0]), Ptr,
                                (Oprnds[2] & 1), 
-                               ((Log2AlignVal < 0) ? 0 : 1<<Log2AlignVal));
+                               (1 << (Oprnds[2]>>1)) >> 1);
         break;
       }
     case Instruction::Store: {