Replace opaque attributes with type attributes (#8369)

Instead of defining pointer types via opaque attributes, we now use the
emitc pointer type and get the type attribute from the type.
diff --git a/iree/compiler/Dialect/VM/Conversion/VMToEmitC/ConvertVMToEmitC.cpp b/iree/compiler/Dialect/VM/Conversion/VMToEmitC/ConvertVMToEmitC.cpp
index 2e29655..2336b4d 100644
--- a/iree/compiler/Dialect/VM/Conversion/VMToEmitC/ConvertVMToEmitC.cpp
+++ b/iree/compiler/Dialect/VM/Conversion/VMToEmitC/ConvertVMToEmitC.cpp
@@ -751,7 +751,8 @@
         /*args=*/
         ArrayAttr::get(ctx,
                        {builder.getIndexAttr(0),
-                        emitc::OpaqueAttr::get(ctx, moduleTypeName + "*")}),
+                        TypeAttr::get(emitc::PointerType::get(
+                            emitc::OpaqueType::get(ctx, moduleTypeName)))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{funcOp.getArgument(0)});
 
@@ -835,8 +836,10 @@
             emitc::PointerType::get(emitc::OpaqueType::get(ctx, "void"))),
         /*callee=*/StringAttr::get(ctx, "EMITC_CAST"),
         /*args=*/
-        ArrayAttr::get(ctx, {builder.getIndexAttr(0),
-                             emitc::OpaqueAttr::get(ctx, "void**")}),
+        ArrayAttr::get(
+            ctx, {builder.getIndexAttr(0),
+                  TypeAttr::get(emitc::PointerType::get(emitc::PointerType::get(
+                      emitc::OpaqueType::get(ctx, "void"))))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{statePtr.getResult()});
 
@@ -881,7 +884,8 @@
           /*callee=*/StringAttr::get(ctx, "EMITC_CAST"),
           /*args=*/
           ArrayAttr::get(ctx, {emitc::OpaqueAttr::get(ctx, bufferName),
-                               emitc::OpaqueAttr::get(ctx, "void*")}),
+                               TypeAttr::get(emitc::PointerType::get(
+                                   emitc::OpaqueType::get(ctx, "void")))}),
           /*templateArgs=*/ArrayAttr{},
           /*operands=*/ArrayRef<Value>{});
 
@@ -1000,7 +1004,8 @@
         /*args=*/
         ArrayAttr::get(
             ctx, {builder.getIndexAttr(0),
-                  emitc::OpaqueAttr::get(ctx, "iree_vm_module_state_t*")}),
+                  TypeAttr::get(emitc::PointerType::get(
+                      emitc::OpaqueType::get(ctx, "iree_vm_module_state_t")))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{stateOp.getResult()});
 
@@ -1058,7 +1063,8 @@
         /*args=*/
         ArrayAttr::get(
             ctx, {builder.getIndexAttr(0),
-                  emitc::OpaqueAttr::get(ctx, moduleStateTypeName + "*")}),
+                  TypeAttr::get(emitc::PointerType::get(
+                      emitc::OpaqueType::get(ctx, moduleStateTypeName)))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{funcOp.getArgument(1)});
 
@@ -1167,7 +1173,8 @@
         /*args=*/
         ArrayAttr::get(
             ctx, {builder.getIndexAttr(0),
-                  emitc::OpaqueAttr::get(ctx, moduleStateTypeName + "*")}),
+                  TypeAttr::get(emitc::PointerType::get(
+                      emitc::OpaqueType::get(ctx, moduleStateTypeName)))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{funcOp.getArgument(1)});
 
@@ -1276,8 +1283,10 @@
             emitc::PointerType::get(emitc::OpaqueType::get(ctx, "void"))),
         /*callee=*/StringAttr::get(ctx, "EMITC_CAST"),
         /*args=*/
-        ArrayAttr::get(ctx, {builder.getIndexAttr(0),
-                             emitc::OpaqueAttr::get(ctx, "void**")}),
+        ArrayAttr::get(
+            ctx, {builder.getIndexAttr(0),
+                  TypeAttr::get(emitc::PointerType::get(emitc::PointerType::get(
+                      emitc::OpaqueType::get(ctx, "void"))))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{modulePtr.getResult()});
 
@@ -1695,7 +1704,8 @@
         /*args=*/
         ArrayAttr::get(ctx,
                        {rewriter.getIndexAttr(0),
-                        emitc::OpaqueAttr::get(ctx, moduleTypeName + "*")}),
+                        TypeAttr::get(emitc::PointerType::get(
+                            emitc::OpaqueType::get(ctx, moduleTypeName)))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{module});
 
@@ -1708,7 +1718,8 @@
         /*args=*/
         ArrayAttr::get(
             ctx, {rewriter.getIndexAttr(0),
-                  emitc::OpaqueAttr::get(ctx, moduleStateTypeName + "*")}),
+                  TypeAttr::get(emitc::PointerType::get(
+                      emitc::OpaqueType::get(ctx, moduleStateTypeName)))}),
         /*templateArgs=*/ArrayAttr{},
         /*operands=*/ArrayRef<Value>{moduleState});
 
@@ -1857,7 +1868,8 @@
           /*args=*/
           ArrayAttr::get(ctx,
                          {rewriter.getIndexAttr(0),
-                          emitc::OpaqueAttr::get(ctx, argumentsType + "*")}),
+                          TypeAttr::get(emitc::PointerType::get(
+                              emitc::OpaqueType::get(ctx, argumentsType)))}),
           /*templateArgs=*/ArrayAttr{},
           /*operands=*/ArrayRef<Value>{argumentsData.getResult(0)});
 
@@ -1898,7 +1910,8 @@
           /*callee=*/StringAttr::get(ctx, "EMITC_CAST"),
           /*args=*/
           ArrayAttr::get(ctx, {rewriter.getIndexAttr(0),
-                               emitc::OpaqueAttr::get(ctx, resultType + "*")}),
+                               TypeAttr::get(emitc::PointerType::get(
+                                   emitc::OpaqueType::get(ctx, resultType)))}),
           /*templateArgs=*/ArrayAttr{},
           /*operands=*/ArrayRef<Value>{resultsData.getResult(0)});