@@ -819,15 +819,16 @@ mlir::LogicalResult mlir::rlc::SubActionStatement::typeCheck(
819
819
820
820
llvm::SmallVector<mlir::Type, 4 > resultTypes;
821
821
llvm::SmallVector<mlir::Location, 4 > resultLoc;
822
- llvm::SmallVector<llvm::StringRef > nameAttrs;
822
+ llvm::SmallVector<mlir::rlc::FunctionArgumentAttr > nameAttrs;
823
823
824
824
for (auto arg : llvm::zip (parent.getArgumentTypes (), parent.getArgNames ()))
825
825
{
826
826
auto type = std::get<0 >(arg);
827
827
if (type.isa <mlir::rlc::ContextType>())
828
828
{
829
829
resultTypes.push_back (type);
830
- nameAttrs.push_back (std::get<1 >(arg));
830
+ nameAttrs.push_back (mlir::rlc::FunctionArgumentAttr::get (
831
+ type.getContext (), std::get<1 >(arg), nullptr , type, nullptr ));
831
832
resultLoc.push_back (parent.getLoc ());
832
833
}
833
834
}
@@ -853,17 +854,18 @@ mlir::LogicalResult mlir::rlc::SubActionStatement::typeCheck(
853
854
resultLoc.push_back (actions.getLoc ());
854
855
}
855
856
856
- for (auto name :
857
- llvm::drop_begin (referred.getDeclaredNames (), forwardedArgsCount ()))
857
+ for (auto arg :
858
+ llvm::drop_begin (referred.getInfo (). getArgs (), forwardedArgsCount ()))
858
859
{
859
- nameAttrs.push_back (name );
860
+ nameAttrs.push_back (arg );
860
861
}
861
862
862
863
auto fixed = rewiter.create <mlir::rlc::ActionStatement>(
863
864
referred.getLoc (),
864
865
resultTypes,
865
866
referred.getName (),
866
- mlir::rlc::FunctionInfoAttr::get (referred.getContext (), nameAttrs),
867
+ mlir::rlc::FunctionInfoAttr::get (
868
+ referred.getContext (), nameAttrs, nullptr , nullptr ),
867
869
referred.getId (),
868
870
referred.getResumptionPoint ());
869
871
@@ -1635,7 +1637,7 @@ mlir::LogicalResult mlir::rlc::ActionStatement::typeCheck(
1635
1637
rewriter.restoreInsertionPoint (point);
1636
1638
1637
1639
llvm::SmallVector<mlir::Type, 4 > newResultTypes;
1638
- llvm::SmallVector<llvm::StringRef , 4 > newArgNames;
1640
+ llvm::SmallVector<mlir::rlc::FunctionArgumentAttr , 4 > newArgNames;
1639
1641
unsigned contextArgCounts = 0 ;
1640
1642
for (auto arg : llvm::zip (parent.getArgumentTypes (), parent.getArgNames ()))
1641
1643
{
@@ -1645,7 +1647,8 @@ mlir::LogicalResult mlir::rlc::ActionStatement::typeCheck(
1645
1647
getPrecondition ().front ().insertArgument (
1646
1648
contextArgCounts++, type, getLoc ());
1647
1649
newResultTypes.push_back (type);
1648
- newArgNames.push_back (std::get<1 >(arg));
1650
+ newArgNames.push_back (mlir::rlc::FunctionArgumentAttr::get (
1651
+ type.getContext (), std::get<1 >(arg), nullptr , type, nullptr ));
1649
1652
}
1650
1653
}
1651
1654
@@ -1670,14 +1673,15 @@ mlir::LogicalResult mlir::rlc::ActionStatement::typeCheck(
1670
1673
for (auto result : getResults ())
1671
1674
newResultTypes.push_back (result.getType ());
1672
1675
1673
- for (auto name : getDeclaredNames ())
1674
- newArgNames.push_back (name );
1676
+ for (auto arg : getInfo (). getArgs ())
1677
+ newArgNames.push_back (arg );
1675
1678
1676
1679
auto newDecl = builder.getRewriter ().create <mlir::rlc::ActionStatement>(
1677
1680
getLoc (),
1678
1681
newResultTypes,
1679
1682
getName (),
1680
- mlir::rlc::FunctionInfoAttr::get (getContext (), newArgNames));
1683
+ mlir::rlc::FunctionInfoAttr::get (
1684
+ getContext (), newArgNames, nullptr , nullptr ));
1681
1685
1682
1686
newDecl.getPrecondition ().takeBody (getPrecondition ());
1683
1687
@@ -1812,6 +1816,112 @@ mlir::LogicalResult mlir::rlc::FromByteArrayOp::typeCheck(
1812
1816
" are supported" );
1813
1817
}
1814
1818
1819
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 >
1820
+ mlir::rlc::ActionFunction::getTypeSourceRange ()
1821
+ {
1822
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 > toReturn;
1823
+
1824
+ if (getInfo ().getReturnTypeLocation () != nullptr )
1825
+ toReturn.push_back (getInfo ().getReturnTypeLocation ());
1826
+
1827
+ for (auto parameter : getInfo ().getArgs ())
1828
+ if (parameter.getTypeLocation () != nullptr )
1829
+ toReturn.push_back (parameter.getTypeLocation ());
1830
+ return toReturn;
1831
+ }
1832
+
1833
+ llvm::SmallVector<mlir::Type, 2 > mlir::rlc::ActionFunction::getExplicitType ()
1834
+ {
1835
+ llvm::SmallVector<mlir::Type, 2 > toReturn;
1836
+
1837
+ if (getInfo ().getReturnTypeLocation () != nullptr )
1838
+ toReturn.push_back (getMainActionType ());
1839
+
1840
+ size_t i = 0 ;
1841
+ for (auto parameter : getInfo ().getArgs ())
1842
+ if (parameter.getTypeLocation () != nullptr )
1843
+ toReturn.push_back (getArgumentTypes ()[i++]);
1844
+ return toReturn;
1845
+ }
1846
+
1847
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 >
1848
+ mlir::rlc::ActionStatement::getTypeSourceRange ()
1849
+ {
1850
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 > toReturn;
1851
+
1852
+ for (auto parameter : getInfo ().getArgs ())
1853
+ if (parameter.getTypeLocation () != nullptr )
1854
+ toReturn.push_back (parameter.getTypeLocation ());
1855
+ return toReturn;
1856
+ }
1857
+
1858
+ llvm::SmallVector<mlir::Type, 2 > mlir::rlc::ActionStatement::getExplicitType ()
1859
+ {
1860
+ llvm::SmallVector<mlir::Type, 2 > toReturn;
1861
+
1862
+ int64_t i = 0 ;
1863
+ for (auto parameter : getInfo ().getArgs ())
1864
+ if (parameter.getTypeLocation () != nullptr )
1865
+ toReturn.push_back (getResultTypes ()[i++]);
1866
+ return toReturn;
1867
+ }
1868
+
1869
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 >
1870
+ mlir::rlc::FlatFunctionOp::getTypeSourceRange ()
1871
+ {
1872
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 > toReturn;
1873
+
1874
+ if (getInfo ().getReturnTypeLocation () != nullptr )
1875
+ toReturn.push_back (getInfo ().getReturnTypeLocation ());
1876
+
1877
+ for (auto parameter : getInfo ().getArgs ())
1878
+ if (parameter.getTypeLocation () != nullptr )
1879
+ toReturn.push_back (parameter.getTypeLocation ());
1880
+ return toReturn;
1881
+ }
1882
+
1883
+ llvm::SmallVector<mlir::Type, 2 > mlir::rlc::FlatFunctionOp::getExplicitType ()
1884
+ {
1885
+ llvm::SmallVector<mlir::Type, 2 > toReturn;
1886
+
1887
+ if (getInfo ().getReturnTypeLocation () != nullptr )
1888
+ toReturn.push_back (getResultTypes ()[0 ]);
1889
+
1890
+ size_t i = 0 ;
1891
+ for (auto parameter : getInfo ().getArgs ())
1892
+ if (parameter.getTypeLocation () != nullptr )
1893
+ toReturn.push_back (getArgumentTypes ()[i++]);
1894
+ return toReturn;
1895
+ }
1896
+
1897
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 >
1898
+ mlir::rlc::FunctionOp::getTypeSourceRange ()
1899
+ {
1900
+ llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 > toReturn;
1901
+
1902
+ if (getInfo ().getReturnTypeLocation () != nullptr )
1903
+ toReturn.push_back (getInfo ().getReturnTypeLocation ());
1904
+
1905
+ for (auto parameter : getInfo ().getArgs ())
1906
+ if (parameter.getTypeLocation () != nullptr )
1907
+ toReturn.push_back (parameter.getTypeLocation ());
1908
+ return toReturn;
1909
+ }
1910
+
1911
+ llvm::SmallVector<mlir::Type, 2 > mlir::rlc::FunctionOp::getExplicitType ()
1912
+ {
1913
+ llvm::SmallVector<mlir::Type, 2 > toReturn;
1914
+
1915
+ if (getInfo ().getReturnTypeLocation () != nullptr )
1916
+ toReturn.push_back (getResultTypes ()[0 ]);
1917
+
1918
+ size_t i = 0 ;
1919
+ for (auto parameter : getInfo ().getArgs ())
1920
+ if (parameter.getTypeLocation () != nullptr )
1921
+ toReturn.push_back (getArgumentTypes ()[i++]);
1922
+ return toReturn;
1923
+ }
1924
+
1815
1925
llvm::SmallVector<mlir::rlc::SourceRangeAttr, 2 >
1816
1926
mlir::rlc::IsOp::getTypeSourceRange ()
1817
1927
{
0 commit comments