uint64_t val = strtoull (end, &end, radix);
#endif
gcc_assert (errno == 0 && end[0] == '\0');
+
+ uint64_t max_positive = uint64_t (wi::max_value (type).to_uhwi ());
+ if (errno == ERANGE || val > max_positive)
+ {
+ a68_moid_format_token m (moid);
+ a68_error (s, "denotation is too large for %e", &m);
+ }
+
return build_int_cst (type, val);
}
else if (moid == M_REAL
--- /dev/null
+begin short short bits a
+ = short short 10r256; { dg-error "denotation is too large for short short bits" }
+ short bits b
+ = short 16rffff1; { dg-error "denotation is too large for short bits" }
+ skip
+end
SHORT BITS ss = SHORT 16r0f0f0;
ASSERT ((ss AND SHORT 16r0f0f) = SHORT 16r0);
ASSERT ((ss AND SHORT 16r00ff) = SHORT 16rf0);
- SHORT SHORT BITS sss = SHORT SHORT 16r0f0f0;
- ASSERT ((sss AND SHORT SHORT 16r0f0f) = SHORT SHORT 16r0);
- ASSERT ((sss AND SHORT SHORT 16r00ff) = SHORT SHORT 16rf0)
+ SHORT SHORT BITS sss = SHORT SHORT 16rf0;
+ ASSERT ((sss AND SHORT SHORT 16r0f) = SHORT SHORT 16r0);
+ ASSERT ((sss AND SHORT SHORT 16rff) = SHORT SHORT 16rf0)
END
{ Shifting by L_bits_width results in all bits being zero. }
-begin assert (short short 16rffff SHR short_short_bits_width = short short 16r0);
+begin assert (short short 16rff SHR short_short_bits_width = short short 16r0);
assert (short 16rffff SHR short_bits_width = short 16r0);
assert (16rffff SHR bits_width = 16r0);
assert (long 16rffff SHR long_bits_width = long 16r0);
assert (long long 16rffff SHR long_long_bits_width = long long 16r0);
- assert (short short 16rffff SHR -short_short_bits_width = short short 16r0);
+ assert (short short 16rff SHR -short_short_bits_width = short short 16r0);
assert (short 16rffff SHR -short_bits_width = short 16r0);
assert (16rffff SHR -bits_width = 16r0);
assert (long 16rffff SHR -long_bits_width = long 16r0);
assert (long long 16rffff SHR -long_long_bits_width = long long 16r0);
- assert (short short 16rffff SHL short_short_bits_width = short short 16r0);
+ assert (short short 16rff SHL short_short_bits_width = short short 16r0);
assert (short 16rffff SHL short_bits_width = short 16r0);
assert (16rffff SHL bits_width = 16r0);
assert (long 16rffff SHL long_bits_width = long 16r0);
assert (long long 16rffff SHL long_long_bits_width = long long 16r0);
- assert (short short 16rffff SHL -short_short_bits_width = short short 16r0);
+ assert (short short 16rff SHL -short_short_bits_width = short short 16r0);
assert (short 16rffff SHL -short_bits_width = short 16r0);
assert (16rffff SHL -bits_width = 16r0);
assert (long 16rffff SHL -long_bits_width = long 16r0);
{ Shifting by > L_bits_width results in all bits being zero. }
-begin assert (short short 16rffff SHR (short_short_bits_width + 1) = short short 16r0);
+begin assert (short short 16rff SHR (short_short_bits_width + 1) = short short 16r0);
assert (short 16rffff SHR (short_bits_width + 1) = short 16r0);
assert (16rffff SHR (bits_width + 1) = 16r0);
assert (long 16rffff SHR (long_bits_width + 1) = long 16r0);
assert (long long 16rffff SHR (long_long_bits_width + 1) = long long 16r0);
- assert (short short 16rffff SHR -(short_short_bits_width + 1) = short short 16r0);
+ assert (short short 16rff SHR -(short_short_bits_width + 1) = short short 16r0);
assert (short 16rffff SHR -(short_bits_width + 1) = short 16r0);
assert (16rffff SHR -(bits_width + 1) = 16r0);
assert (long 16rffff SHR -(long_bits_width + 1) = long 16r0);
assert (long long 16rffff SHR -(long_long_bits_width + 1) = long long 16r0);
- assert (short short 16rffff SHL (short_short_bits_width + 1) = short short 16r0);
+ assert (short short 16rff SHL (short_short_bits_width + 1) = short short 16r0);
assert (short 16rffff SHL (short_bits_width + 1) = short 16r0);
assert (16rffff SHL (bits_width + 1) = 16r0);
assert (long 16rffff SHL (long_bits_width + 1) = long 16r0);
assert (long long 16rffff SHL (long_long_bits_width + 1) = long long 16r0);
- assert (short short 16rffff SHL -(short_short_bits_width + 1) = short short 16r0);
+ assert (short short 16rff SHL -(short_short_bits_width + 1) = short short 16r0);
assert (short 16rffff SHL -(short_bits_width + 1) = short 16r0);
assert (16rffff SHL -(bits_width + 1) = 16r0);
assert (long 16rffff SHL -(long_bits_width + 1) = long 16r0);
ASSERT ((NOT bbb AND LONG LONG 16rffff) = LONG LONG 16r0f0f);
SHORT BITS ss = SHORT 16rf0f0;
ASSERT ((NOT ss AND SHORT 16rffff) = SHORT 16r0f0f);
- SHORT SHORT BITS sss = SHORT SHORT 16rf0f0;
- ASSERT ((NOT sss AND SHORT SHORT 16rffff) = SHORT SHORT 16r0f0f)
+ SHORT SHORT BITS sss = SHORT SHORT 16rf0;
+ ASSERT ((NOT sss AND SHORT SHORT 16rff) = SHORT SHORT 16r0f)
END
SHORT BITS ss = SHORT 16rf0f0;
ASSERT ((ss OR SHORT 16r0f0f) = SHORT 16rffff);
ASSERT ((ss OR SHORT 16r00ff) = SHORT 16rf0ff);
- SHORT SHORT BITS sss = SHORT SHORT 16rf0f0;
- ASSERT ((sss OR SHORT SHORT 16r0f0f) = SHORT SHORT 16rffff);
- ASSERT ((sss OR SHORT SHORT 16r00ff) = SHORT SHORT 16rf0ff)
+ SHORT SHORT BITS sss = SHORT SHORT 16rf0;
+ ASSERT ((sss OR SHORT SHORT 16r0f) = SHORT SHORT 16rff);
+ ASSERT ((sss OR SHORT SHORT 16rff) = SHORT SHORT 16rff)
END