Hi, I have this input file: ------------------------------------------------------------ template<typename T, typename U> struct palate< enum E : T { a = 1, b = 2, c = 3, 4 }; ------------------------------------------------------------ Running creduce (current HEAD, 2c22d7) on it causes an infinite loop where creduce actually grows the file on each step by adding one space in the beginning of the second line. Also, a creduce-XXXXXX temp directory is created in temp directory for each of those steps (and never removed). By the way, creduce doesn't fully respect $TMPDIR; apparently POSIX::tmpnam() used in pass_clex.pm unconditionally returns a path in /tmp. I'm running creduce repeatedly from an automatic script with TMPDIR set to a directory which the script removes, but still getting my /tmp filled with files named "fileXXXXXX", some of them containing C code and some containing the line "Error: The counter value exceeded the number of transformation instances!"... Sami ------------------------------------------------------------ $ creduce ./require_property.sh creduce-bug.cpp ===< 25052 >=== running 8 interestingness test(s) in parallel ===< pass_blank :: 0 >=== ===< pass_clang_binsrch :: replace-function-def-with-decl >=== ===< pass_clang_binsrch :: remove-unused-function >=== ===< pass_lines :: 0 >=== (-0.9 %, 113 bytes) (0.0 %, 112 bytes) ===< pass_lines :: 0 >=== (-0.9 %, 113 bytes) (0.0 %, 112 bytes) ===< pass_lines :: 0 >=== (-0.9 %, 113 bytes) (0.0 %, 112 bytes) ===< pass_lines :: 1 >=== (-1.8 %, 114 bytes) (-0.9 %, 113 bytes) ===< pass_lines :: 1 >=== (-2.7 %, 115 bytes) (-1.8 %, 114 bytes) ===< pass_lines :: 1 >=== (-3.6 %, 116 bytes) (-2.7 %, 115 bytes) ===< pass_lines :: 2 >=== (-4.5 %, 117 bytes) (-3.6 %, 116 bytes) ===< pass_lines :: 2 >=== (-5.4 %, 118 bytes) (-4.5 %, 117 bytes) ===< pass_lines :: 2 >=== (-6.2 %, 119 bytes) (-5.4 %, 118 bytes) ===< pass_lines :: 10 >=== (-7.1 %, 120 bytes) (-6.2 %, 119 bytes) ===< pass_lines :: 10 >=== (-8.0 %, 121 bytes) (-7.1 %, 120 bytes) ===< pass_lines :: 10 >=== (-8.9 %, 122 bytes) (-8.0 %, 121 bytes) ===< pass_clang_binsrch :: replace-function-def-with-decl >=== ===< pass_clang_binsrch :: remove-unused-function >=== ===< pass_lines :: 0 >=== (-8.9 %, 122 bytes) (-8.0 %, 121 bytes) ===< pass_lines :: 1 >=== (-9.8 %, 123 bytes) (-8.9 %, 122 bytes) ===< pass_lines :: 2 >=== (-10.7 %, 124 bytes) (-9.8 %, 123 bytes) ===< pass_lines :: 10 >=== (-11.6 %, 125 bytes) (-10.7 %, 124 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 >=== ===< pass_clang :: param-to-local >=== ===< pass_clang :: remove-nested-function >=== ===< pass_clang :: union-to-struct >=== ===< pass_clang :: return-void >=== ===< pass_clang :: simple-inliner >=== ===< pass_clang :: reduce-pointer-level >=== ===< pass_clang :: lift-assignment-expr >=== ===< pass_clang :: copy-propagation >=== ===< pass_clang :: callexpr-to-value >=== ===< pass_clang :: replace-callexpr >=== ===< pass_clang :: simplify-callexpr >=== ===< pass_clang :: remove-unused-function >=== ===< pass_clang :: remove-unused-enum-member >=== ===< pass_clang :: remove-enum-member-value >=== ===< pass_clang :: remove-unused-var >=== ===< pass_clang :: simplify-if >=== ===< pass_clang :: reduce-array-dim >=== ===< pass_clang :: reduce-array-size >=== ===< pass_clang :: move-function-body >=== ===< pass_clang :: simplify-comma-expr >=== ===< pass_clang :: simplify-dependent-typedef >=== ===< pass_clang :: replace-simple-typedef >=== ===< pass_clang :: replace-dependent-typedef >=== ===< pass_clang :: replace-one-level-typedef-type >=== ===< pass_clang :: remove-unused-field >=== (-11.6 %, 125 bytes) (-12.5 %, 126 bytes) (-13.4 %, 127 bytes) (-14.3 %, 128 bytes) (-15.2 %, 129 bytes) (-16.1 %, 130 bytes) (-17.0 %, 131 bytes) (-17.9 %, 132 bytes) (-18.8 %, 133 bytes) [... ad infinitum] ^C $ cat creduce-bug.best template<typename T, typename U> struct palate< enum E : T { a = 1, b = 2, c = 3, 4 }; ------------------------------------------------------------ Sami
Attachment:
signature.asc
Description: Digital signature