Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2019-07

Bug fixes awaiting verification/approval

4 messages · 1 person · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

J. Gareth Moreton

Hi everyone,

I just finished fixing issue #32913
<https://bugs.freepascal.org/view.php?id=32913> that's been on my books for nearly a year now.  It turns out I didn't need the node dump feature to fix it after all, although it was still a lot more challenging than I would have given it credit for.

In the meantime, I have a couple of issues that have patches that (hopefully) fix reported problems in the Free Pascal Compiler, and when the administrators find time, I would like them to be evaluated for correctness and to ensure I haven't broken any rules in regards to how the compiler is structured.

#32913 - nested try blocks with exit gives Error: Internal error <https://bugs.freepascal.org/view.php?id=32913>
#35700 - [Assembler] Fix for SSE/AVX instructions with 32- and 64-bit operands <https://bugs.freepascal.org/view.php?id=35700> - this is a parent of another reported issue: #32219 - AVX addition does not compile <https://bugs.freepascal.org/view.php?id=32219>.

There are some other things on my list awaiting approval, but these are features rather than bug fixes so are not as critical.

Thank you for time.

Gareth aka. Kit

Reply by email

J. Gareth Moreton
to J. Gareth Moreton

As requested by Sven on issue #32913
<https://bugs.freepascal.org/view.php?id=32913>, a new issue, #35841 <https://bugs.freepascal.org/view.php?id=35841>, has been split off.  They are technically two distinct bugs, although one (an error raised by the assembler) was hidden by the other (an internal error).

The patch has been split, which was easy to do because the fixes were located in different files.

Note that the fix for 32913 is a little ham-fisted but was the only way I could make it work without causing failures elsewhere (not parsing the except block at all if the try part was empty caused tbf/tb0089.pp and tbf/tb0090.pp to erroneously compile without fault), and writing ANY code to the finally block would trigger the internal error.  However, I believe this fix could also open up future optimisation potential because by having a boolean "dead code" flag, the node parser can skip pointless node generation and only do the necessary syntax checks for the benefit of the user.

It's a little tricky to explain, but I hope the two patches will speak for themselves.

Gareth

Reply by email

J. Gareth Moreton
to J. Gareth Moreton

I've tried to address the issues raised by Florian in #32913, but have largely failed, outside of adding more comments.  I can't yet see any other way to implement a fix without causing a large performance penalty or a regression elsewhere, so if the patch is rejected again, I would like some help or at least some discussion as to how I should go about this.

Gareth aka. Kit

Reply by email