@@ -229,62 +229,42 @@ void mlir::intrange::detail::defaultInferResultRanges(
229229 llvm::SmallVector<ConstantIntRanges> unpacked;
230230 unpacked.reserve (argRanges.size ());
231231
232- for (const IntegerValueRange &range : argRanges) {
233- if (range.isUninitialized ())
234- return ;
235- unpacked.push_back (range.getValue ());
236- }
237-
238- interface.inferResultRanges (
239- unpacked,
240- [&setResultRanges](Value value, const ConstantIntRanges &argRanges) {
241- setResultRanges (value, IntegerValueRange{argRanges});
242- });
243- }
244-
245- void mlir::intrange::detail::defaultInferResultRangesFromOptional (
246- InferIntRangeInterface interface, ArrayRef<ConstantIntRanges> argRanges,
247- SetIntRangeFn setResultRanges) {
248- auto ranges = llvm::to_vector_of<IntegerValueRange>(argRanges);
249- interface.inferResultRangesFromOptional (
250- ranges,
251- [&setResultRanges](Value value, const IntegerValueRange &argRanges) {
252- if (!argRanges.isUninitialized ())
253- setResultRanges (value, argRanges.getValue ());
254- });
255- }
256-
257- void mlir::intrange::detail::defaultInferResultRangesOrPoison (
258- InferIntRangeInterface interface, ArrayRef<IntegerValueRange> argRanges,
259- SetIntLatticeFn setResultRanges) {
260-
261232 bool signedPoison = false ;
262233 bool unsignedPoison = false ;
263234 for (const IntegerValueRange &range : argRanges) {
264235 if (range.isUninitialized ())
265- continue ;
236+ return ;
266237
267238 const ConstantIntRanges &value = range.getValue ();
239+ unpacked.push_back (value);
268240 signedPoison = signedPoison || value.isSignedPoison ();
269241 unsignedPoison = unsignedPoison || value.isUnsignedPoison ();
270242 }
271243
272- auto visitor = [&](Value value, const IntegerValueRange &range) {
273- if (range.isUninitialized ())
274- return ;
275-
244+ auto visitor = [&](Value value, const ConstantIntRanges &range) {
276245 if (!signedPoison && !unsignedPoison)
277246 return setResultRanges (value, range);
278247
279- const ConstantIntRanges &origRange = range.getValue ();
280- auto poison = ConstantIntRanges::poison (origRange.getBitWidth ());
281- APInt umin = unsignedPoison ? poison.umin () : origRange.umin ();
282- APInt umax = unsignedPoison ? poison.umax () : origRange.umax ();
283- APInt smin = signedPoison ? poison.smin () : origRange.smin ();
284- APInt smax = signedPoison ? poison.smax () : origRange.smax ();
248+ auto poison = ConstantIntRanges::poison (range.getBitWidth ());
249+ APInt umin = unsignedPoison ? poison.umin () : range.umin ();
250+ APInt umax = unsignedPoison ? poison.umax () : range.umax ();
251+ APInt smin = signedPoison ? poison.smin () : range.smin ();
252+ APInt smax = signedPoison ? poison.smax () : range.smax ();
285253
286254 setResultRanges (value, ConstantIntRanges (umin, umax, smin, smax));
287255 };
288256
289- interface.inferResultRangesFromOptional (argRanges, visitor);
257+ interface.inferResultRanges (unpacked, visitor);
258+ }
259+
260+ void mlir::intrange::detail::defaultInferResultRangesFromOptional (
261+ InferIntRangeInterface interface, ArrayRef<ConstantIntRanges> argRanges,
262+ SetIntRangeFn setResultRanges) {
263+ auto ranges = llvm::to_vector_of<IntegerValueRange>(argRanges);
264+ interface.inferResultRangesFromOptional (
265+ ranges,
266+ [&setResultRanges](Value value, const IntegerValueRange &argRanges) {
267+ if (!argRanges.isUninitialized ())
268+ setResultRanges (value, argRanges.getValue ());
269+ });
290270}
0 commit comments