|
|
|
@ -489,15 +489,25 @@ AbstractBasePtr InferImplMakeRange(const AnalysisEnginePtr &, const PrimitivePtr
|
|
|
|
|
if (slide.step <= 0) {
|
|
|
|
|
MS_LOG(EXCEPTION) << "Error slice[" << slide.start << ", " << slide.stop << ", " << slide.step << "]";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = slide.start; i < slide.stop; i += slide.step) {
|
|
|
|
|
args.push_back(abstract::FromValue(i));
|
|
|
|
|
if (i > 0 && INT_MAX - i < slide.step) {
|
|
|
|
|
MS_EXCEPTION(ValueError) << "For make range, the required cycles number is greater than max cycles number, "
|
|
|
|
|
"will cause integer overflow.";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (slide.step >= 0) {
|
|
|
|
|
MS_LOG(EXCEPTION) << "Error slice[" << slide.start << ", " << slide.stop << ", " << slide.step << "]";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = slide.start; i > slide.stop; i += slide.step) {
|
|
|
|
|
args.push_back(abstract::FromValue(i));
|
|
|
|
|
if (i < 0 && INT_MIN - i > slide.step) {
|
|
|
|
|
MS_EXCEPTION(ValueError) << "For make range, the required cycles number is greater than max cycles number, "
|
|
|
|
|
"will cause integer overflow.";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|