diff --git a/ethosu/regor/common/data_type.hpp b/ethosu/regor/common/data_type.hpp index f7d9a2c1d7c4f50e4c9f0519753e80a862cfc677..4d7b1f0abd039c1aa450dfa91f48f10e67d3f885 100644 --- a/ethosu/regor/common/data_type.hpp +++ b/ethosu/regor/common/data_type.hpp @@ -21,6 +21,7 @@ #include #include +#include #include namespace regor @@ -196,7 +197,9 @@ inline constexpr int DataTypeStorageSizeBytes(DataType type, int elements) const int storageBits = DataTypeStorageSizeBits(type); const int bits = IsPacked(type) ? DataTypeSizeBits(type) : storageBits; assert(storageBits >= 8); - return (((elements * bits) + storageBits - 1) / storageBits) * (storageBits / 8); + int64_t result = (((int64_t(elements) * bits) + storageBits - 1) / storageBits) * (storageBits / 8); + assert(result < std::numeric_limits::max()); + return int(result); }