diff options
| author | Chris Lattner <sabre@nondot.org> | 2011-02-06 21:44:57 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2011-02-06 21:44:57 +0000 | 
| commit | 35315d065b74537c1290767d0b8da9ca2036fdea (patch) | |
| tree | e00a09050e0a4552c4a0ecb533c550fea4daa41a /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
| parent | b54605b8e22fa620bb843637cc15bc74aac9aed5 (diff) | |
| download | llvm-35315d065b74537c1290767d0b8da9ca2036fdea.zip llvm-35315d065b74537c1290767d0b8da9ca2036fdea.tar.gz llvm-35315d065b74537c1290767d0b8da9ca2036fdea.tar.bz2 | |
enhance vmcore to know that udiv's can be exact, and add a trivial
instcombine xform to exercise this.
Nothing forms exact udivs yet though.  This is progress on PR8862
llvm-svn: 124992
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
| -rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index adcad74..a744d83 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -1090,8 +1090,9 @@ bool BitcodeReader::ParseConstants() {                Flags |= OverflowingBinaryOperator::NoSignedWrap;              if (Record[3] & (1 << bitc::OBO_NO_UNSIGNED_WRAP))                Flags |= OverflowingBinaryOperator::NoUnsignedWrap; -          } else if (Opc == Instruction::SDiv) { -            if (Record[3] & (1 << bitc::SDIV_EXACT)) +          } else if (Opc == Instruction::SDiv || +                     Opc == Instruction::UDiv) { +            if (Record[3] & (1 << bitc::PEO_EXACT))                Flags |= SDivOperator::IsExact;            }          } @@ -1905,8 +1906,9 @@ bool BitcodeReader::ParseFunctionBody(Function *F) {              cast<BinaryOperator>(I)->setHasNoSignedWrap(true);            if (Record[OpNum] & (1 << bitc::OBO_NO_UNSIGNED_WRAP))              cast<BinaryOperator>(I)->setHasNoUnsignedWrap(true); -        } else if (Opc == Instruction::SDiv) { -          if (Record[OpNum] & (1 << bitc::SDIV_EXACT)) +        } else if (Opc == Instruction::SDiv || +                   Opc == Instruction::UDiv) { +          if (Record[OpNum] & (1 << bitc::PEO_EXACT))              cast<BinaryOperator>(I)->setIsExact(true);          }        } | 
