It's an error to translate this:
authorBill Wendling <isanbard@gmail.com>
Wed, 9 Jun 2010 19:00:55 +0000 (19:00 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 9 Jun 2010 19:00:55 +0000 (19:00 +0000)
commitd64ba3ee62cc854218d9b76b9420493d82313d06
tree98142a3c2b72e7d6a92983a7994436c21fa323f5
parent1d451dff63e9c4241794a3645dfe4ee67efe5b22
It's an error to translate this:

   %reg1025 = <sext> %reg1024
    ...
   %reg1026 = SUBREG_TO_REG 0, %reg1024, 4

into this:

   %reg1025 = <sext> %reg1024
    ...
   %reg1027 = EXTRACT_SUBREG %reg1025, 4
   %reg1026 = SUBREG_TO_REG 0, %reg1027, 4

The problem here is that SUBREG_TO_REG is there to assert that an implicit zext
occurs. It doesn't insert a zext instruction. If we allow the EXTRACT_SUBREG
here, it will give us the value after the <sext>, not the original value of
%reg1024 before <sext>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105741 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/OptimizeExts.cpp