Adds MemRef type and adds support for parsing memref affine map composition.

PiperOrigin-RevId: 204756982
diff --git a/lib/IR/AsmPrinter.cpp b/lib/IR/AsmPrinter.cpp
index 2dd2a3b..7347a81 100644
--- a/lib/IR/AsmPrinter.cpp
+++ b/lib/IR/AsmPrinter.cpp
@@ -303,7 +303,10 @@
   llvm::errs() << "\n";
 }
 
-void AffineMap::dump() const { print(llvm::errs()); }
+void AffineMap::dump() const {
+  print(llvm::errs());
+  llvm::errs() << "\n";
+}
 
 void AffineExpr::dump() const {
   print(llvm::errs());
@@ -393,7 +396,6 @@
   os << ")";
 
   if (!isBounded()) {
-    os << "\n";
     return;
   }
 
@@ -401,7 +403,7 @@
   os << " size (";
   interleave(getRangeSizes(), [&](AffineExpr *expr) { os << *expr; },
              [&]() { os << ", "; });
-  os << ")\n";
+  os << ")";
 }
 
 void BasicBlock::print(raw_ostream &os) const {
@@ -449,6 +451,7 @@
   for (auto *map : affineMapList) {
     os << "#" << id++ << " = ";
     map->print(os);
+    os << '\n';
   }
   for (auto *fn : functionList)
     fn->print(os);