compiler: fix buglet in lshift type determination
compiler: fix buglet in lshift type determination

It's possible to construct an lshift expression using unsafe.Sizeof
that is technically a compile-time constant but can't be evaluated
without going through backend methods. In this case, insure that
Type::make_non_abstract_type is called on the numeric operand of the
shift (as opposed to leaving as abstract), to avoid an assert later on
in the compiler flow.

Fixes golang/go#21372.

Change-Id: Idcc85835566d9da2f3c1ef87b50bbe56de40fafe
Reviewed-on: https://go-review.googlesource.com/54370
Reviewed-by: Ian Lance Taylor <87e9c6d529889242b7e184afb632328636553ab4@golang.org>

golang/gofrontend,golang/gofrontend,golang/gofrontend,golang/gofrontend