@@ -49,8 +49,8 @@ void genCharacterCopy(mlir::Value src, mlir::Value srcLen, mlir::Value dst,
49
49
if (!srcLen && !dstLen && srcTy.getFKind () == dstTy.getFKind () &&
50
50
srcTy.getLen () == dstTy.getLen ()) {
51
51
// same size, so just use load and store
52
- auto load = builder. template create < fir::LoadOp>( loc, src);
53
- builder. template create < fir::StoreOp>( loc, load, dst);
52
+ auto load = fir::LoadOp::create (builder, loc, src);
53
+ fir::StoreOp::create (builder, loc, load, dst);
54
54
return ;
55
55
}
56
56
auto zero = builder.template create <mlir::arith::ConstantIndexOp>(loc, 0 );
@@ -70,75 +70,72 @@ void genCharacterCopy(mlir::Value src, mlir::Value srcLen, mlir::Value dst,
70
70
if (!srcLen && !dstLen && srcTy.getLen () >= dstTy.getLen ()) {
71
71
auto upper = builder.template create <mlir::arith::ConstantIndexOp>(
72
72
loc, dstTy.getLen () - 1 );
73
- auto loop = builder. template create < fir::DoLoopOp>( loc, zero, upper, one);
73
+ auto loop = fir::DoLoopOp::create (builder, loc, zero, upper, one);
74
74
auto insPt = builder.saveInsertionPoint ();
75
75
builder.setInsertionPointToStart (loop.getBody ());
76
76
auto csrcTy = toArrayTy (srcTy);
77
- auto csrc = builder. template create < fir::ConvertOp>( loc, csrcTy, src);
78
- auto in = builder. template create < fir::CoordinateOp>(
79
- loc, toCoorTy (csrcTy), csrc, loop.getInductionVar ());
80
- auto load = builder. template create < fir::LoadOp>( loc, in);
77
+ auto csrc = fir::ConvertOp::create (builder, loc, csrcTy, src);
78
+ auto in = fir::CoordinateOp::create (builder, loc, toCoorTy (csrcTy), csrc,
79
+ loop.getInductionVar ());
80
+ auto load = fir::LoadOp::create (builder, loc, in);
81
81
auto cdstTy = toArrayTy (dstTy);
82
- auto cdst = builder. template create < fir::ConvertOp>( loc, cdstTy, dst);
83
- auto out = builder. template create < fir::CoordinateOp>(
84
- loc, toCoorTy (cdstTy), cdst, loop.getInductionVar ());
82
+ auto cdst = fir::ConvertOp::create (builder, loc, cdstTy, dst);
83
+ auto out = fir::CoordinateOp::create (builder, loc, toCoorTy (cdstTy), cdst,
84
+ loop.getInductionVar ());
85
85
mlir::Value cast =
86
86
srcTy.getFKind () == dstTy.getFKind ()
87
87
? load.getResult ()
88
- : builder
89
- .template create <fir::ConvertOp>(loc, toEleTy (cdstTy), load)
88
+ : fir::ConvertOp::create (builder, loc, toEleTy (cdstTy), load)
90
89
.getResult ();
91
- builder. template create < fir::StoreOp>( loc, cast, out);
90
+ fir::StoreOp::create (builder, loc, cast, out);
92
91
builder.restoreInsertionPoint (insPt);
93
92
return ;
94
93
}
95
94
auto minusOne = [&](mlir::Value v) -> mlir::Value {
96
95
return builder.template create <mlir::arith::SubIOp>(
97
- loc, builder.template create <fir::ConvertOp>(loc, one.getType (), v),
98
- one);
96
+ loc, fir::ConvertOp::create (builder, loc, one.getType (), v), one);
99
97
};
100
98
mlir::Value len = dstLen ? minusOne (dstLen)
101
99
: builder
102
100
.template create <mlir::arith::ConstantIndexOp>(
103
101
loc, dstTy.getLen () - 1 )
104
102
.getResult ();
105
- auto loop = builder. template create < fir::DoLoopOp>( loc, zero, len, one);
103
+ auto loop = fir::DoLoopOp::create (builder, loc, zero, len, one);
106
104
auto insPt = builder.saveInsertionPoint ();
107
105
builder.setInsertionPointToStart (loop.getBody ());
108
106
mlir::Value slen =
109
- srcLen
110
- ? builder.template create <fir::ConvertOp>(loc, one.getType (), srcLen)
111
- .getResult ()
112
- : builder
113
- .template create <mlir::arith::ConstantIndexOp>(loc,
114
- srcTy.getLen ())
115
- .getResult ();
107
+ srcLen ? fir::ConvertOp::create (builder, loc, one.getType (), srcLen)
108
+ .getResult ()
109
+ : builder
110
+ .template create <mlir::arith::ConstantIndexOp>(
111
+ loc, srcTy.getLen ())
112
+ .getResult ();
116
113
auto cond = builder.template create <mlir::arith::CmpIOp>(
117
114
loc, mlir::arith::CmpIPredicate::slt, loop.getInductionVar (), slen);
118
- auto ifOp = builder. template create < fir::IfOp>( loc, cond, /* withElse=*/ true );
115
+ auto ifOp = fir::IfOp::create (builder, loc, cond, /* withElse=*/ true );
119
116
builder.setInsertionPointToStart (&ifOp.getThenRegion ().front ());
120
117
auto csrcTy = toArrayTy (srcTy);
121
- auto csrc = builder. template create < fir::ConvertOp>( loc, csrcTy, src);
122
- auto in = builder. template create < fir::CoordinateOp>(
123
- loc, toCoorTy (csrcTy), csrc, loop.getInductionVar ());
124
- auto load = builder. template create < fir::LoadOp>( loc, in);
118
+ auto csrc = fir::ConvertOp::create (builder, loc, csrcTy, src);
119
+ auto in = fir::CoordinateOp::create (builder, loc, toCoorTy (csrcTy), csrc,
120
+ loop.getInductionVar ());
121
+ auto load = fir::LoadOp::create (builder, loc, in);
125
122
auto cdstTy = toArrayTy (dstTy);
126
- auto cdst = builder. template create < fir::ConvertOp>( loc, cdstTy, dst);
127
- auto out = builder. template create < fir::CoordinateOp>(
128
- loc, toCoorTy (cdstTy), cdst, loop.getInductionVar ());
123
+ auto cdst = fir::ConvertOp::create (builder, loc, cdstTy, dst);
124
+ auto out = fir::CoordinateOp::create (builder, loc, toCoorTy (cdstTy), cdst,
125
+ loop.getInductionVar ());
129
126
mlir::Value cast =
130
127
srcTy.getFKind () == dstTy.getFKind ()
131
128
? load.getResult ()
132
- : builder. template create < fir::ConvertOp>( loc, toEleTy (cdstTy), load)
129
+ : fir::ConvertOp::create (builder, loc, toEleTy (cdstTy), load)
133
130
.getResult ();
134
- builder. template create < fir::StoreOp>( loc, cast, out);
131
+ fir::StoreOp::create (builder, loc, cast, out);
135
132
builder.setInsertionPointToStart (&ifOp.getElseRegion ().front ());
136
- auto space = builder. template create < fir::StringLitOp>(
137
- loc, toEleTy (cdstTy), llvm::ArrayRef<char >{' ' });
138
- auto cdst2 = builder. template create < fir::ConvertOp>( loc, cdstTy, dst);
139
- auto out2 = builder. template create < fir::CoordinateOp>(
140
- loc, toCoorTy (cdstTy), cdst2, loop.getInductionVar ());
141
- builder. template create < fir::StoreOp>( loc, space, out2);
133
+ auto space = fir::StringLitOp::create (builder, loc, toEleTy (cdstTy),
134
+ llvm::ArrayRef<char >{' ' });
135
+ auto cdst2 = fir::ConvertOp::create (builder, loc, cdstTy, dst);
136
+ auto out2 = fir::CoordinateOp::create (builder, loc, toCoorTy (cdstTy), cdst2,
137
+ loop.getInductionVar ());
138
+ fir::StoreOp::create (builder, loc, space, out2);
142
139
builder.restoreInsertionPoint (insPt);
143
140
}
144
141
0 commit comments