Jeff, On Tue, 17 Nov 2020 at 16:56, Jeff Law <l...@redhat.com> wrote: > > Note that in his comment to patch 2/2, Jim has noted that user code for > > RISC-V may assume a truncation of the shift-operand... > What I'd suggest doing would be to leave the invalid shift count in the > IL in VRP, then extend the erroneous path isolation code to turn an > invalid shift into a trap (conditionally of course).
As I remember, FORTRAN allows both LSHIFT(i, shift) or SHIFTL(i, shift) with 'shift' less than or equal to BITSIZE(i) ... this leaves i << BITSIZE(i) defined for FORTRAN and undefined for C. This seems to indicate that an LSHIFT_EXPR is intentionally not constrained either to C language (or any other) semantics at this time. To handle this in path isolation, should we have different tree expressions for a left-shift with C semantics and one with FORTRAN semantics? Philipp.