diff options
author | Itay Bookstein <itay.bookstein@nextsilicon.com> | 2021-10-08 09:55:55 +0800 |
---|---|---|
committer | Wang, Pengfei <pengfei.wang@intel.com> | 2021-10-08 09:57:57 +0800 |
commit | faa0e2ae7644c332180cfe4e19daf378bc7a46a9 (patch) | |
tree | b0b2ff8ebaaeb4f277b8ddf942e7c9ab6bda9417 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | c236883b6ba791881256b31cfdb8a8520a821a67 (diff) | |
download | llvm-faa0e2ae7644c332180cfe4e19daf378bc7a46a9.zip llvm-faa0e2ae7644c332180cfe4e19daf378bc7a46a9.tar.gz llvm-faa0e2ae7644c332180cfe4e19daf378bc7a46a9.tar.bz2 |
[SelectionDAG] Fix shift libcall ABI mismatch in shift-amount argument
The shift libcalls have a shift amount parameter of MVT::i32, but
sometimes ExpandIntRes_Shift may be called with a node whose
second operand is a type that is larger than that. This leads to
an ABI mismatch, and for example causes a spurious zeroing of
a register in RV32 for 64-bit shifts. Note that at present regular
shift intstructions already have their shift amount operand adapted
at SelectionDAGBuilder::visitShift time, and funnelled shifts bypass that.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D110508
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions