[llvm-commits] [llvm] r128488 - in /llvm/trunk: lib/MC/MCParser/AsmParser.cpp test/MC/AsmParser/floating-literals.s
Eli Friedman
eli.friedman at gmail.com
Tue Mar 29 14:26:43 PDT 2011
n Tue, Mar 29, 2011 at 2:11 PM, Kevin Enderby <enderby at apple.com> wrote:
> Author: enderby
> Date: Tue Mar 29 16:11:52 2011
> New Revision: 128488
>
> URL: http://llvm.org/viewvc/llvm-project?rev=128488&view=rev
> Log:
> Added support symbolic floating point constants in the MC assembler for Infinity
> and Nans with the same strings as GAS supports. rdar://8673024
>
> Modified:
> llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> llvm/trunk/test/MC/AsmParser/floating-literals.s
>
> Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=128488&r1=128487&r2=128488&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
> +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Tue Mar 29 16:11:52 2011
> @@ -1552,13 +1552,21 @@
> Lex();
>
> if (getLexer().isNot(AsmToken::Integer) &&
> - getLexer().isNot(AsmToken::Real))
> + getLexer().isNot(AsmToken::Real) &&
> + getLexer().isNot(AsmToken::Identifier))
> return TokError("unexpected token in directive");
>
> // Convert to an APFloat.
> APFloat Value(Semantics);
> - if (Value.convertFromString(getTok().getString(),
> - APFloat::rmNearestTiesToEven) ==
> + StringRef IDVal = getTok().getString();
> + if (getLexer().is(AsmToken::Identifier)) {
> + if (!IDVal.compare_lower("infinity") || !IDVal.compare_lower("inf"))
> + Value = APFloat::getInf(Semantics);
> + else if (!IDVal.compare_lower("nan"))
> + Value = APFloat::getNaN(Semantics, false, ~0);
> + else
> + return TokError("invalid floating point literal");
> + } else if (Value.convertFromString(IDVal, APFloat::rmNearestTiesToEven) ==
> APFloat::opInvalidOp)
> return TokError("invalid floating point literal");
> if (IsNeg)
>
> Modified: llvm/trunk/test/MC/AsmParser/floating-literals.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/floating-literals.s?rev=128488&r1=128487&r2=128488&view=diff
> ==============================================================================
> --- llvm/trunk/test/MC/AsmParser/floating-literals.s (original)
> +++ llvm/trunk/test/MC/AsmParser/floating-literals.s Tue Mar 29 16:11:52 2011
> @@ -6,6 +6,12 @@
> # CHECK: .long 1082549862
> .single 1.2455, +2.3, 3, + 4.2
>
> +# CHECK: .long 2139095040
> +.single InFinIty
> +
> +# CHECK: .long 2147483647
> +.single nAN
> +
> # CHECK: .long 1067928519
> .float 1.307
Might be worth adding a test for "-inf" as well.
-Eli
More information about the llvm-commits
mailing list