ConstExpr::getelementptr now takes a vector of Constants not Values
[oota-llvm.git] / lib / AsmParser / llvmAsmParser.y
index a26ea80c8150afa9e6d5e4ef270405f59639e8d6..d865742c85b6176e346bde3ce906165a5a072150 100644 (file)
@@ -969,13 +969,23 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
   };
 
 
+// FIXME: ConstExpr::get never return null!
 ConstExpr: Types CAST ConstVal {
     ConstantExpr* CPE = ConstantExpr::get($2, $3, $1->get());
     if (CPE == 0) ThrowException("constant expression builder returned null!");
     $$ = CPE;
   }
   | Types GETELEMENTPTR '(' ConstVal IndexList ')' {
-    ConstantExpr* CPE = ConstantExpr::get($2, $4, *$5, $1->get());
+    vector<Constant*> IdxVec;
+    for (unsigned i = 0, e = $5->size(); i != e; ++i)
+      if (Constant *C = dyn_cast<Constant>((*$5)[i]))
+        IdxVec.push_back(C);
+      else
+        ThrowException("Arguments to getelementptr must be constants!");
+
+    delete $5;
+
+    ConstantExpr* CPE = ConstantExpr::get($2, $4, IdxVec, $1->get());
     if (CPE == 0) ThrowException("constant expression builder returned null!");
     $$ = CPE;
   }