In R-2.15.3 the text
is parsed as the numeric (double precision) value (16^2+16^1)/2^5=8.5, the same as the L-less 0x110p-5. In R-3.0.3, it is parsed as the numeric value 16^2+16^1=272, while 0x110p-5 is parsed as the expected 8.5.
The R-3.0.3 parser also emits a warning which seems to be truncated:
In parse(text = "0x110p-5L") :
non-integer value 0x110p- qualified with L; using numeric value
The warning describes what should have happened, not what did.
If the n in "p-<n>L" is small enough that the result is integral, then the parser gives an integer with the correct value:
This change may have been due to fixing bug 15234 (Hexadecimal literals are not parsed correctly).
This is also in R 3.1.0 and current R-devel (and 3.1.0 patched).
Indeed at least a bug in the warning message ("0x110p-" instead of "0x110p-5" or "...-5L"),
but I'd say it really should return the same as without ending 'L' ...
but then I am not a hex-const-xpert.
There were two lines in the parser code which were no longer appropriate after the bugfix.