Kyle Cripps

Results 103 comments of Kyle Cripps

Actions inlining transforms `foo()` to something like this: ``` @name("foo") action foo_0() { { @name("x") bit x_0; @name("y") bit y_0; if (true) { if (false) { __e(x_0); } } else...

> I was able to fix this with the following change to `SubstituteParameters::postorder(IR::PathExpression *expr)`: I am not sure if it would better to perform the cloning here or in `ActionsInliner::preorder(IR::MethodCallStatement...

Here is another case, which hits the same `Compiler bug`, but is not fixed by my change described above: ``` extern void __e(in bit arg); extern void __e2(in bit arg);...

> or by inserting a pass that converts DAGs into trees before the def-use analysis. This is starting to sound like the best solution..

Introduced by e60cb8a633e305a75cb28c56dbd3d1dbccc871c8.

I'm not sure if this is the best fix, but changing `expressionWrites()` in `def_use.h` to the following seems to work for our backend: ``` void expressionWrites(const IR::Expression *expression, const LocationSet...

@mihaibudiu Makes sense, thank you for the explanation.

Unfortunately, https://github.com/p4lang/p4c/pull/4539 does not fix this, so it doesn't seem to be a duplicate of #4500.