It was only a matter of time...

It was only a matter of time...

[dcc32 Fatal Error] Test.pas(461): F2084 Internal Error: I18858

Anyone seen this I18858 before?

Seems to be inlining related, if I comment out the inline keyword on a procedure I call in my method, it doesn't barf.

edit: https://quality.embarcadero.com/browse/RSP-11186

Comments

  1. I get a shitload of internal errors all the time :-( . This XE8 is somewhat better. Can't recall all the numbers.

    ReplyDelete
  2. It's better not to use inlining at all in XE2-XE5 because of terrible code generated by compiler.
    For other versions do not use it with procedures having records as parameters or returming a record - compiler sometime generates incorrect code.

    ReplyDelete
  3. 18858 is a line number that may be different between compiler revisions. I have seen some issues in the 12-13 k range like QC 77121 for example, but am not aware of one in that range.

    ReplyDelete
  4. Lars Fosdal XE7.1. Alexander Sviridenkov Spot on, the inlined procedure takes a record.

    https://quality.embarcadero.com/browse/RSP-11186

    ReplyDelete
  5. Asbjørn Heid
    Even when it will be fixed there still be a risk of getting incorrect code (without any warnings or errors) so I just can repeat - do not use inlining with records.

    ReplyDelete
  6. Alexander Sviridenkov That would mean essentially disabling inlining in my case then :(

    ReplyDelete
  7. x64 compiles eats it up. Same defect in XE8 x86 compiler.

    ReplyDelete
  8. It is regression that happened in XE2. XE does compile it.

    ReplyDelete

Post a Comment