[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-kawa] [bug #40494] internal error on kawa -C bug.scm, 1.14 and head
From: |
Per Bothner |
Subject: |
[Bug-kawa] [bug #40494] internal error on kawa -C bug.scm, 1.14 and head |
Date: |
Sun, 10 Nov 2013 20:00:40 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 |
Update of bug #40494 (project kawa):
Status: None => In Progress
Assigned to: None => bothner
_______________________________________________________
Follow-up Comment #2:
This one was tricky, and I've spent a fair amount of time on it.
The immediate problem is inlining function parameters that are lambda
expressions. Specifically inlining of (lambda () (proc)) in bottom. This
doesn't work because it needs the parameter to top - which is not inlined.
There is a hook to avoid inlining in this case - the call to
Compilation.avoidInline in InlineCalls.visitLambdaExp. The problem is that
avoidInline checks proc.outer and for complicated reasons the begin causes
proc.outer to be a 'let'. (This is wrong, but it ia fixed in a later pass.)
So I finally found a simple and clean fix in the macro-expansion for 'begin'.
Unfortunately, it loses some line-number information, which caused a
regression in an error message in one of the tests.
So I ended up doing a major-rewrite of the data structure used for the
preliminary 'scan' phase. The idea was good, but tracking down the various
bug in the change took a while.
I'm almost ready to check in the fix - I just need to create a test based on
your report. If nothing goes wrong, sometime this afternoon.
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?40494>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/