On 21 Jun 2010, at 18:26, Erik Schnetter wrote:
The current version of Kranc cannot digest the current version of McLachlan. The problem is with enforcing the trace A constraint, where the variable At_ij is both read and written -- Kranc does not emit the statement that reads the local variable from the grid function.
The enclosed patch corrects this. It is somewhat lengthy and not entirely elegant:
I would rather not commit such a patch, especially as I thought that the code to do this had already been implemented. It's possible that the code was reverted somehow in a later commit. Can you check back to
http://github.com/ianhinder/Kranc/commit/f88dacd7e55e94c64a6cd103c81f9bccdb9...
and see if that version of Kranc works for you?
Output assignments for all temporaries, not only for those that are only used in the RHS. If a temporary is used in a LHS, it may still need to be loaded from a grid function.
This will have a performance hit (the compiler is often not smart enough to eliminate these things).
Add a somewhat complex logic to ensure that each temporary and shortcut is declared only once.
When declaring temporaries, do not declare them as constant, because they may change.
As I said, I thought that the logic was already there to do the right thing. I will have to look into this again.