[RISCV] Fix ICE in isDesirableToCommuteWithShift
authorSam Elliott <selliott@lowrisc.org>
Mon, 12 Aug 2019 13:51:00 +0000 (13:51 +0000)
committerSam Elliott <selliott@lowrisc.org>
Mon, 12 Aug 2019 13:51:00 +0000 (13:51 +0000)
commitfee242aed415458fa89eaaa0e4ae8a887bd8c874
treebacaf9064cdbf2d4560558a459c5c7bd84ee6b7f
parent20d37fab82968d45c00f85023bb329aa836221ad
[RISCV] Fix ICE in isDesirableToCommuteWithShift

Summary:
Ana Pazos reported a bug where we were not checking that an APInt would
fit into 64-bits before calling `getSExtValue()`. This caused asserts when
compiling large constants, such as i128s, as happens when compiling compiler-rt.

This patch adds a testcase and makes the callback less error-prone.

Reviewers: apazos, asb, luismarques

Reviewed By: luismarques

Subscribers: hiraditya, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, jrtc27, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, s.egerton, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D66081

llvm-svn: 368572
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/test/CodeGen/RISCV/add-before-shl.ll