Controlled Node Splitting

  • Johan Janssen
  • Henk Corporaal
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1060)


To exploit instruction level parallelism in programs over multiple basic blocks, programs should have reducible control flow graphs. However not all programs satisfy this property. A new method, called Controlled Node Splitting (CNS), for transforming irreducible control flow graphs to reducible control flow graphs is presented. CNS duplicates nodes of the control flow graph to obtain reducible control flow graphs. CNS results in a minimum number of splits and a minimum number of duplicates. Since the computation time to find the optimal split sequence is large, a heuristic has been developed. The results of this heuristic are close to the optimum. Straightforward application of node splitting may result in an average code size increase of 235%. CNS with the heuristic limits the increase to only 3%.


control flow graphs reducibility irreducibility node splitting compilation instruction level parallelism 


  1. 1.
    Jan Hoogerbrugge and Henk Corporaal. Transport-triggering vs. operationtriggering. In Lecture Notes in Computer Science 786, Compiler Construction, pages 435–449. Springer-Verlag, 1994.Google Scholar
  2. 2.
    D. Bernstein and M. Rodeh. Global instruction scheduling for superscalar machines. In Proc. of the ACM SIGPLAN 1991 conference on Programming Language Design and Implementation, pages 241–255, June 1991.Google Scholar
  3. 3.
    Barbara G. Ryder and Marvin C. Paull. Elimination algorithms for data flow analysis. ACM Computing Surveys, 18(3):277–316, September 1986.Google Scholar
  4. 4.
    Ana M. Erosa and Laurie J. Hendren. Taming control flow: A structured approach to eliminating goto statements. In Proceedings of the 1994 International Conference on Computer Languages, pages 229–240, Toulouse, France, May 1994.Google Scholar
  5. 5.
    Zahira Ammarguellat. A control-flow normalization algorithm and its complexity. IEEE Transaction on software engineering, 18(3):237–251, March 1992.Google Scholar
  6. 6.
    John Cocke and Raymond E. Miller. Some analysis techniques for optimizing computer programs. In Proceedings of 2nd Hawaii Conference on System Sciences, pages 143–146, 1969.Google Scholar
  7. 7.
    Matthew S. Hecht. Flow Analysis of Computer Programs. Programming Languages Series. Elsevier North-Holland, 1977.Google Scholar
  8. 8.
    Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley Series in Computer Science. Addison-Wesley Publishing Company, 1988.Google Scholar
  9. 9.
    J. Cocke. On certain graph-theoretic properties of programs. Technical Report Research Report RC-3391, T.J. Watson Research Center, 1971.Google Scholar
  10. 10.
    F.E. Allen. A basis for program optimization. In Proceedings of 1971 IFIP Congress, pages 385–390, Amsterdam, 1971. IEEE, North Holland Publ..Google Scholar
  11. 11.
    F.E. Allen and J. Cocke. A program data flow analysis procedure. Commun. ACM, 19(3):137–147, March 1976.Google Scholar
  12. 12.
    M.S. Hecht and J.D. Ullman. Flow graph reducibility. SIAM J. Computing, 1(2):188–202, 1972.Google Scholar
  13. 13.
    Johan Janssen and Henk Corporaal. Making graphs reducible with controlled node splitting. Technical Report JJ-9501, Delft University of Technology, Department of Electrical Engineering, 1995.Google Scholar
  14. 14.
    Henk Corporaal and Hans (J.M.) Mulder. MOVE: A framework for highperformance processor design. In Supercomputing-91, pages 692–701, Albuquerque, November 1991.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Johan Janssen
    • 1
  • Henk Corporaal
    • 1
  1. 1.Department of Electrical Engineering Section Computer Architecture and Digital SystemsDelft University of TechnologyGA DelftThe Netherlands

Personalised recommendations