From: Vikram S. Adve Date: Sun, 25 May 2003 21:58:11 +0000 (+0000) Subject: Bug fix: sign-extension was not happening for C = -MININT since C == -C! X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=c2f09393205b5be542d984a3f0c65f17dcc417fb;p=oota-llvm.git Bug fix: sign-extension was not happening for C = -MININT since C == -C! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6332 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/SparcV9/SparcV9InstrInfo.cpp b/lib/Target/SparcV9/SparcV9InstrInfo.cpp index 977360bf006..aa48278fbff 100644 --- a/lib/Target/SparcV9/SparcV9InstrInfo.cpp +++ b/lib/Target/SparcV9/SparcV9InstrInfo.cpp @@ -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)); }