Fix legalization of SETCC with promoted integer intrinsics
authorHal Finkel <hfinkel@anl.gov>
Wed, 15 May 2013 21:37:27 +0000 (21:37 +0000)
committerHal Finkel <hfinkel@anl.gov>
Wed, 15 May 2013 21:37:27 +0000 (21:37 +0000)
commit71da6755c8b0a7444be5531798556c00f4dad101
tree22cda5b6b3b0b32bb5b2b0bab50155c7e004499b
parent769b71a7f575f4c1636342954eb9d0b4af258b5f
Fix legalization of SETCC with promoted integer intrinsics

If the input operands to SETCC are promoted, we need to make sure that we
either use the promoted form of both operands (or neither); a mixture is not
allowed. This can happen, for example, if a target has a custom promoted
i1-returning intrinsic (where i1 is not a legal type). In this case, we need to
use the promoted form of both operands.

This change only augments the behavior of the existing logic in the case where
the input types (which may or may not have already been legalized) disagree,
and should not affect existing target code because this case would otherwise
cause an assert in the SETCC operand promotion code.

This will be covered by (essentially all of the) tests for the new PPCCTRLoops
infrastructure.

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