summaryrefslogtreecommitdiffstats
path: root/llvm/support/lib/Support/CommandLine.cpp
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2003-07-10 20:07:54 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2003-07-10 20:07:54 +0000
commit4f420ce3a3789b2e0875a716c7297812e117c066 (patch)
treed8ebf5ee6abc9dbf516330bb35cb5242ef65096e /llvm/support/lib/Support/CommandLine.cpp
parent8ea738a9ffe24a86119bdc5a9914a0c96ab628af (diff)
downloadbcm5719-llvm-4f420ce3a3789b2e0875a716c7297812e117c066.tar.gz
bcm5719-llvm-4f420ce3a3789b2e0875a716c7297812e117c066.zip
Several important bug fixes:
(1) Cannot use ANDN(ot), ORN, and XORN for boolean ops, only bitwise ops. (2) Conditional move instructions must distinguish signed and unsigned condition codes, e.g., MOVLE vs. MOVLEU. (3) Conditional-move-on-register was using the cond-move-on-cc opcodes, which produces a valid-looking instruction with bogus registers! (4) Here's a really cute one: dividing-by-2^k for negative numbers needs to add 2^k-1 before shifting, not add 1 after shifting. Sadly, these are the same when k=0 so our poor test case worked fine. (5) Casting between signed and unsigned values was not correct: completely reimplemented. (6) Zero-extension on unsigned values was bogus: I was only doing the SRL and not the SLLX before it. Don't know WHAT I was thinking! (7) And the most important class of changes: Sign-extensions on signed values. Signed values are not sign-extended after ordinary operations, so they must be sign-extended before the following cases: -- passing to an external or unknown function -- returning from a function -- using as operand 2 of DIV or REM -- using as either operand of condition-code setting operation (currently only SUBCC), with smaller than 32-bit operands Also, a couple of improvements: (1) Fold cast-to-bool into Not(bool). Need to do this for And, Or, XOR also. (2) Convert SetCC-Const into a conditional-move-on-register (case 41) if the constant is 0. This was only being done for branch-on-SetCC-Const when the branch is folded with the SetCC-Const. llvm-svn: 7159
Diffstat (limited to 'llvm/support/lib/Support/CommandLine.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud