compiler: fix buglet in lshift type determination
authorIan Lance Taylor <ian@gcc.gnu.org>
Wed, 9 Aug 2017 21:24:00 +0000 (21:24 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Wed, 9 Aug 2017 21:24:00 +0000 (21:24 +0000)
commit19eec7ac5f73e7fc9eee97438bd5cbdcd07072c2
tree4a33dc3570b0216cf7209e5e31a7f9bdb1f8a647
parentcc6a467f450424a14bfc71d03e83b3981f4fc864
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.

    Reviewed-on: https://go-review.googlesource.com/54370

From-SVN: r251006
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc