This paper proposes a method of reinforcing random program generation
for automated testing of C compilers. Although program generation
based on equivalence transformation is a promising method for
detecting deep bugs in compilers, the range of syntax it can cover has
been narrower than the production rule based methods. While the
conventional method based on equivalence transformation can only
generate programs with scalar variables, assign statements, if
and for statements, the proposed method attempts to extend them
to handle arrays, structures, unions, as well as while and
switch statements and function calls. A random test system,
Orange4, extended with the proposed method has detected bugs in the
latest development versions of GCC-8.0.0 and LLVM/Clang-6.0 which had
been missed by the existing test methods.