[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [creduce-bugs] Stuck in param-to-global/param-to-local pass



Thanks for the test case. We know what causes bugs of this form-- a pass reports that it made progress but it actually didn't. This breaks a C-Reduce invariant.

If this happens often, we can put a check for this into the main C-Reduce, but until this I hadn't seen it happen for quite a while.

John



On 09/22/2014 12:33 AM, Markus Trippelsdorf wrote:
Creduce sometimes gets stuck in the param-to-global/param-to-local
passes without making forward progress.

See the attached testcase and script. In the script g++ is version 4.9.1
and /var/tmp/gcc_test/usr/local/bin/g++ is gcc trunk.

===< pass_lines :: 10 >===
(19.6 %, 438 bytes)
(19.8 %, 437 bytes)
===< pass_clang :: remove-unused-function >===
===< pass_balanced :: curly >===
===< pass_balanced :: curly2 >===
===< pass_balanced :: curly3 >===
===< pass_clang :: callexpr-to-value >===
===< pass_clang :: replace-callexpr >===
===< pass_clang :: simplify-callexpr >===
===< pass_clang :: remove-unused-enum-member >===
===< pass_clang :: remove-enum-member-value >===
===< pass_clang :: remove-unused-var >===
===< pass_special :: a >===
===< pass_special :: b >===
===< pass_special :: c >===
===< pass_ternary :: b >===
===< pass_ternary :: c >===
===< pass_balanced :: curly >===
===< pass_balanced :: curly2 >===
===< pass_balanced :: curly3 >===
===< pass_balanced :: parens >===
===< pass_balanced :: angles >===
===< pass_balanced :: curly-only >===
===< pass_balanced :: parens-only >===
===< pass_balanced :: angles-only >===
===< pass_clang :: remove-namespace >===
===< pass_clang :: aggregate-to-scalar >===
===< pass_clang :: local-to-global >===
===< pass_clang :: param-to-global >===
(19.8 %, 437 bytes)
(19.8 %, 437 bytes)
(19.8 %, 437 bytes)
(19.8 %, 437 bytes)
... goes on forever.