http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51695

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jan.kratochvil at redhat
                   |                            |dot com

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-04 
11:25:57 UTC ---
One problem with such temporaries approach would be that if the temporaries are
in the whole expression evaluated only conditionally, they could have unwanted
side-effects (reading uninitialized memory, division by zero, producing NaNs
etc.) that the debugger might complain about loudly.
Say if the expression is (if_then_else (r1 < 56) (temp1) (const_int 0))
where temp1 is (mem (foo + r1)) or similar, if we evaluate it upfront, the
debugger might complain.
Another alternative would be (for a dwarf2out.c solution, so the compile time
memory issue would be still there) when we'd be finalizing all the DWARF
expressions in the CU, we'd somehow hash the larger subexpressions where it
might be beneficial and if they are long enough and occur at least twice,
create a DW_TAG_dwarf_procedure for them and just replace those subexpressions
with DW_OP_call* to that procedure.

Reply via email to