Bug fix: sign-extension was not happening for C = -MININT since C == -C!

llvm-svn: 6332
This commit is contained in:
Vikram S. Adve 2003-05-25 21:58:11 +00:00
parent dd4307ff2b
commit 5b941461b1
1 changed files with 3 additions and 2 deletions

View File

@ -142,8 +142,9 @@ CreateSETSWConst(const TargetMachine& target, int32_t C,
// Set the low 32 bits of dest
CreateSETUWConst(target, (uint32_t) C, dest, mvec, /*isSigned*/true);
// Sign-extend to the high 32 bits if needed
if (C < 0 && (-C) > (int32_t) MAXSIMM)
// Sign-extend to the high 32 bits if needed.
// NOTE: The value C = 0x80000000 is bad: -C == C and so -C is < MAXSIMM
if (C < 0 && (C == -C || -C > (int32_t) MAXSIMM))
mvec.push_back(BuildMI(V9::SRA, 3).addReg(dest).addZImm(0).addRegDef(dest));
}