]> granicus.if.org Git - clang/commitdiff
Simplify the code a bit and avoid a gcc waring about uninitialized variables.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 9 Jun 2010 03:48:40 +0000 (03:48 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 9 Jun 2010 03:48:40 +0000 (03:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105676 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGBuiltin.cpp

index 777be4da86dd3ab37cc36083b5d657188babfcad..1c903094b4d89e72c06c293d8051bcd245414836 100644 (file)
@@ -906,35 +906,7 @@ Value *CodeGenFunction::EmitNeonCall(Function *F, SmallVectorImpl<Value*> &Ops,
 
 Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
                                            const CallExpr *E) {
-  llvm::SmallVector<Value*, 4> Ops;
-  bool usgn, quad, poly, half;
-  const llvm::Type *Ty;
-  unsigned Int;
-  
-  // Determine the type of this overloaded NEON intrinsic.
-  if (BuiltinID > ARM::BI__builtin_thread_pointer) {
-    for (unsigned i = 0, e = E->getNumArgs() - 1; i != e; i++)
-      Ops.push_back(EmitScalarExpr(E->getArg(i)));
-    
-    llvm::APSInt Result;
-    const Expr *Arg = E->getArg(E->getNumArgs()-1);
-    if (!Arg->isIntegerConstantExpr(Result, getContext()))
-      return 0;
-    
-    unsigned type = Result.getZExtValue();
-    usgn = type & 0x08;
-    quad = type & 0x10;
-    poly = type == 5 || type == 6;
-    half = type == 7;
-
-    Ty = GetNeonType(VMContext, type & 0x7, quad);
-    if (!Ty)
-      return 0;
-  }
-  
-  switch (BuiltinID) {
-  default: return 0;
-  case ARM::BI__clear_cache: {
+  if (BuiltinID == ARM::BI__clear_cache) {
     const FunctionDecl *FD = E->getDirectCallee();
     Value *a = EmitScalarExpr(E->getArg(0));
     Value *b = EmitScalarExpr(E->getArg(1));
@@ -944,6 +916,29 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
     return Builder.CreateCall2(CGM.CreateRuntimeFunction(FTy, Name),
                                a, b);
   }
+
+  llvm::SmallVector<Value*, 4> Ops;
+  // Determine the type of this overloaded NEON intrinsic.
+  assert(BuiltinID > ARM::BI__builtin_thread_pointer);
+  for (unsigned i = 0, e = E->getNumArgs() - 1; i != e; i++)
+    Ops.push_back(EmitScalarExpr(E->getArg(i)));
+
+  llvm::APSInt Result;
+  const Expr *Arg = E->getArg(E->getNumArgs()-1);
+  if (!Arg->isIntegerConstantExpr(Result, getContext()))
+    return 0;
+
+  unsigned type = Result.getZExtValue();
+  bool usgn = type & 0x08;
+  bool quad = type & 0x10;
+
+  const llvm::Type *Ty = GetNeonType(VMContext, type & 0x7, quad);
+  if (!Ty)
+    return 0;
+
+  unsigned Int;
+  switch (BuiltinID) {
+  default: return 0;
   case ARM::BI__builtin_neon_vaba_v:
   case ARM::BI__builtin_neon_vabaq_v:
     Int = usgn ? Intrinsic::arm_neon_vabau : Intrinsic::arm_neon_vabas;