Introduce a single AST node SizeOfAlignOfExpr for all sizeof and alignof expressions, both of values and types.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59057 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp
index 11ce8ea..8e6d5ab 100644
--- a/lib/Analysis/GRExprEngine.cpp
+++ b/lib/Analysis/GRExprEngine.cpp
@@ -380,8 +380,8 @@
       VisitReturnStmt(cast<ReturnStmt>(S), Pred, Dst);
       break;
       
-    case Stmt::SizeOfAlignOfTypeExprClass:
-      VisitSizeOfAlignOfTypeExpr(cast<SizeOfAlignOfTypeExpr>(S), Pred, Dst);
+    case Stmt::SizeOfAlignOfExprClass:
+      VisitSizeOfAlignOfExpr(cast<SizeOfAlignOfExpr>(S), Pred, Dst);
       break;
       
     case Stmt::StmtExprClass: {
@@ -1749,11 +1749,11 @@
   assert(0 && "unprocessed InitListExpr type");
 }
 
-/// VisitSizeOfAlignOfTypeExpr - Transfer function for sizeof(type).
-void GRExprEngine::VisitSizeOfAlignOfTypeExpr(SizeOfAlignOfTypeExpr* Ex,
-                                              NodeTy* Pred,
-                                              NodeSet& Dst) {
-  QualType T = Ex->getArgumentType();
+/// VisitSizeOfAlignOfExpr - Transfer function for sizeof(type).
+void GRExprEngine::VisitSizeOfAlignOfExpr(SizeOfAlignOfExpr* Ex,
+                                          NodeTy* Pred,
+                                          NodeSet& Dst) {
+  QualType T = Ex->getTypeOfArgument();
   uint64_t amt;  
   
   if (Ex->isSizeOf()) {
@@ -1972,40 +1972,6 @@
       
       return;
     }
-     
-    case UnaryOperator::AlignOf: {
-      
-      QualType T = U->getSubExpr()->getType();
-      
-      // FIXME: Add support for VLAs.
-      
-      if (!T.getTypePtr()->isConstantSizeType())
-        return;
-      
-      uint64_t size = getContext().getTypeAlign(T) / 8;                
-      const GRState* St = GetState(Pred);
-      St = BindExpr(St, U, NonLoc::MakeVal(getBasicVals(), size, U->getType()));
-      
-      MakeNode(Dst, U, Pred, St);
-      return;
-    }
-      
-    case UnaryOperator::SizeOf: {
-            
-      QualType T = U->getSubExpr()->getType();
-        
-      // FIXME: Add support for VLAs.
-      
-      if (!T.getTypePtr()->isConstantSizeType())
-        return;
-        
-      uint64_t size = getContext().getTypeSize(T) / 8;                
-      const GRState* St = GetState(Pred);
-      St = BindExpr(St, U, NonLoc::MakeVal(getBasicVals(), size, U->getType()));
-        
-      MakeNode(Dst, U, Pred, St);
-      return;
-    }
   }
 
   // Handle ++ and -- (both pre- and post-increment).
diff --git a/lib/Analysis/LiveVariables.cpp b/lib/Analysis/LiveVariables.cpp
index 9b0f09e..07fda99 100644
--- a/lib/Analysis/LiveVariables.cpp
+++ b/lib/Analysis/LiveVariables.cpp
@@ -195,7 +195,6 @@
   Expr *E = U->getSubExpr();
   
   switch (U->getOpcode()) {
-  case UnaryOperator::SizeOf: return;      
   case UnaryOperator::PostInc:
   case UnaryOperator::PostDec:
   case UnaryOperator::PreInc:
diff --git a/lib/Analysis/UninitializedValues.cpp b/lib/Analysis/UninitializedValues.cpp
index a02e544..6048902 100644
--- a/lib/Analysis/UninitializedValues.cpp
+++ b/lib/Analysis/UninitializedValues.cpp
@@ -171,9 +171,6 @@
       break;
     }
     
-    case UnaryOperator::SizeOf:
-      return Initialized;
-      
     default:
       break;
   }