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

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



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); };
}