diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 0175d65..5eed0eb 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -972,6 +972,26 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr $$ = $1; }; +ConstVal : SIntType EINT64VAL { // integral constants + if (!ConstantSInt::isValueValidForType($1, $2)) + ThrowException("Constant value doesn't fit in type!"); + $$ = ConstantSInt::get($1, $2); + } + | UIntType EUINT64VAL { // integral constants + if (!ConstantUInt::isValueValidForType($1, $2)) + ThrowException("Constant value doesn't fit in type!"); + $$ = ConstantUInt::get($1, $2); + } + | BOOL TRUE { // Boolean constants + $$ = ConstantBool::True; + } + | BOOL FALSE { // Boolean constants + $$ = ConstantBool::False; + } + | FPType FPVAL { // Float & Double constants + $$ = ConstantFP::get($1, $2); + }; + ConstExpr: Types CAST ConstVal { $$ = ConstantExpr::getCast($3, $1->get()); @@ -1019,26 +1039,6 @@ ConstExpr: Types CAST ConstVal { }; -ConstVal : SIntType EINT64VAL { // integral constants - if (!ConstantSInt::isValueValidForType($1, $2)) - ThrowException("Constant value doesn't fit in type!"); - $$ = ConstantSInt::get($1, $2); - } - | UIntType EUINT64VAL { // integral constants - if (!ConstantUInt::isValueValidForType($1, $2)) - ThrowException("Constant value doesn't fit in type!"); - $$ = ConstantUInt::get($1, $2); - } - | BOOL TRUE { // Boolean constants - $$ = ConstantBool::True; - } - | BOOL FALSE { // Boolean constants - $$ = ConstantBool::False; - } - | FPType FPVAL { // Float & Double constants - $$ = ConstantFP::get($1, $2); - }; - // ConstVector - A list of comma seperated constants. ConstVector : ConstVector ',' ConstVal { ($$ = $1)->push_back($3); |