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. -- Markus
Attachment:
check.sh
Description: Bourne shell script
class WindowList { static void addWindow(); static void activateWindow(void*); }; class QAction { public: void triggered(); }; void WindowList::addWindow() { auto action = new QAction; &QAction::triggered, [action] { activateWindow(action); }; }