stage3/array_range_check.cc
changeset 964 5f4dfe6670da
parent 667 bd1360f29f15
child 965 c9eeb67ba939
equal deleted inserted replaced
963:e3d4dca7520b 964:5f4dfe6670da
   213 			lower_ull  = -GET_CVALUE( int64, symbol->lower_limit);
   213 			lower_ull  = -GET_CVALUE( int64, symbol->lower_limit);
   214 			dimension  =  GET_CVALUE(uint64, symbol->upper_limit) + lower_ull;     
   214 			dimension  =  GET_CVALUE(uint64, symbol->upper_limit) + lower_ull;     
   215 			if (dimension < lower_ull)
   215 			if (dimension < lower_ull)
   216 				STAGE3_ERROR(0, symbol, symbol, "Number of elements in array subrange exceeds maximum number of elements (%llu).", std::numeric_limits< unsigned long long int >::max());
   216 				STAGE3_ERROR(0, symbol, symbol, "Number of elements in array subrange exceeds maximum number of elements (%llu).", std::numeric_limits< unsigned long long int >::max());
   217 		}
   217 		}
   218 	} else ERROR;
   218 	} else {debug_c::print_ast(symbol);ERROR;}
   219 
   219 
   220 	/* correct value for dimension is actually ---> dimension = upper_limit - lower_limit + 1
   220 	/* correct value for dimension is actually ---> dimension = upper_limit - lower_limit + 1
   221 	 * Up to now, we have only determined dimension = upper_limit - lower_limit
   221 	 * Up to now, we have only determined dimension = upper_limit - lower_limit
   222 	 * We must first check whether this last increment will cause an overflow!
   222 	 * We must first check whether this last increment will cause an overflow!
   223 	 */
   223 	 */