> This works fine: int[5000000000] data; on my 32-bit system.

The problem will occur on 64-bit system. On 32-bit system, `size_t` is in [0, uint.max], so we can always omit literal suffix.

> I don't see how, with a static array we know dim is an integer literal size_t.

Normally DMD diagnostic message prints literal suffix for integers. By fixing issue 9565, only when static array dimension is representable without literal suffix, it's omitted. However `LU` suffix should still be printed in 64bit target code if it is necessary. Just using `toInteger` will make exception to the rule which all other places follow.