mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-27 13:40:30 +00:00
Tighten up handling of checks for shift instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9191 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
60596382aa
commit
888d3bc0cd
@ -1093,8 +1093,8 @@ ConstExpr: CAST '(' ConstVal TO Types ')' {
|
||||
| ShiftOps '(' ConstVal ',' ConstVal ')' {
|
||||
if ($5->getType() != Type::UByteTy)
|
||||
ThrowException("Shift count for shift constant must be unsigned byte!");
|
||||
if (!$3->getType()->isIntegral())
|
||||
ThrowException("Shift constant expression requires integral operand!");
|
||||
if (!$3->getType()->isInteger())
|
||||
ThrowException("Shift constant expression requires integer operand!");
|
||||
$$ = ConstantExpr::getShift($1, $3, $5);
|
||||
};
|
||||
|
||||
@ -1631,6 +1631,8 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
|
||||
| ShiftOps ResolvedVal ',' ResolvedVal {
|
||||
if ($4->getType() != Type::UByteTy)
|
||||
ThrowException("Shift amount must be ubyte!");
|
||||
if (!$2->getType()->isInteger())
|
||||
ThrowException("Shift constant expression requires integer operand!");
|
||||
$$ = new ShiftInst($1, $2, $4);
|
||||
}
|
||||
| CAST ResolvedVal TO Types {
|
||||
|
Loading…
Reference in New Issue
Block a user