This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 10/08/16 18:57, Jakub Jelinek wrote:
On Wed, Aug 10, 2016 at 08:51:32AM +1000, kugan wrote:I see it now. The problem is we are just looking at (-1) being in the ops list for passing changed to rewrite_expr_tree in the case of multiplication by negate. If we have combined (-1), as in the testcase, we will not have the (-1) and will pass changed=false to rewrite_expr_tree. We should set changed based on what happens in try_special_add_to_ops. Attached patch does this. Bootstrap and regression testing are ongoing. Is this OK for trunk if there is no regression.I think the bug is elsewhere. In particular in undistribute_ops_list/zero_one_operation/decrement_power. All those look problematic in this regard, they change RHS of statements to something that holds a different value, while keeping the LHS. So, generally you should instead just add a new stmt next to the old one, and adjust data structures (replace the old SSA_NAME in some ->op with the new one). decrement_power might be a problem here, dunno if all the builtins are const in all cases that DSE would kill the old one, Richard, any preferences for that? reset flow sensitive info + reset debug stmt uses, or something different? Though, replacing the LHS with a new anonymous SSA_NAME might be needed too, in case it is before SSA_NAME of a user var that doesn't yet have any debug stmts.
Hi Jakub,This is the patch I have now (not full tested yet). This is along what you described above. I think I have to handle all the LHS in zero_one_operation too, I will wait for the feedback before working on it.
Thanks, Kugan
Attachment:
pr72835_3.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |