CA2102089A1 - Recompilation of Computer Programs for Enhanced Optimization - Google Patents

Recompilation of Computer Programs for Enhanced Optimization

Info

Publication number
CA2102089A1
CA2102089A1 CA2102089A CA2102089A CA2102089A1 CA 2102089 A1 CA2102089 A1 CA 2102089A1 CA 2102089 A CA2102089 A CA 2102089A CA 2102089 A CA2102089 A CA 2102089A CA 2102089 A1 CA2102089 A1 CA 2102089A1
Authority
CA
Canada
Prior art keywords
callgraph
procedure
called
registers
procedures
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CA2102089A
Other languages
French (fr)
Other versions
CA2102089C (en
Inventor
David M. Gillies
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM Canada Ltd
Original Assignee
IBM Canada Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IBM Canada Ltd filed Critical IBM Canada Ltd
Priority to CA002102089A priority Critical patent/CA2102089C/en
Priority to JP18380294A priority patent/JP3337174B2/en
Priority to EP94307568A priority patent/EP0651327A3/en
Publication of CA2102089A1 publication Critical patent/CA2102089A1/en
Priority to US08/598,065 priority patent/US5768595A/en
Application granted granted Critical
Publication of CA2102089C publication Critical patent/CA2102089C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Abstract

An optimising compiler for producing executable programs from code, high level languages compiles the code whilst generating data from which a callgraph may be constructed, and then recompiles the procedures identified in the callgraph in an order which reverses the topology of the callgraph while monitoring usage of hardware registers. Procedures which are rarely or never called, or result in termination of the program, are identified, and are modified if needed so that if called, registers which they may modify are saved prior to execution of the procedure and subsequently restored if necessary, so that in a calling procedure, subsequently recompiled, no account need be taken of possible register usage by the called procedure. This makes additional registers available to the calling procedure, and enables register storing and restoring which must otherwise be associated with the callsite to be eliminated.
CA002102089A 1993-10-29 1993-10-29 Recompilation of computer programs for enhanced optimization Expired - Fee Related CA2102089C (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CA002102089A CA2102089C (en) 1993-10-29 1993-10-29 Recompilation of computer programs for enhanced optimization
JP18380294A JP3337174B2 (en) 1993-10-29 1994-08-04 Compilation method
EP94307568A EP0651327A3 (en) 1993-10-29 1994-10-14 Recompilation of computer programs for enhanced optimization
US08/598,065 US5768595A (en) 1993-10-29 1996-02-07 System and method for recompiling computer programs for enhanced optimization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CA002102089A CA2102089C (en) 1993-10-29 1993-10-29 Recompilation of computer programs for enhanced optimization

Publications (2)

Publication Number Publication Date
CA2102089A1 true CA2102089A1 (en) 1995-04-30
CA2102089C CA2102089C (en) 1999-05-25

Family

ID=4152045

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002102089A Expired - Fee Related CA2102089C (en) 1993-10-29 1993-10-29 Recompilation of computer programs for enhanced optimization

Country Status (4)

Country Link
US (1) US5768595A (en)
EP (1) EP0651327A3 (en)
JP (1) JP3337174B2 (en)
CA (1) CA2102089C (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5797012A (en) * 1995-12-28 1998-08-18 International Business Machines Corporation Connectivity based program partitioning
US5850549A (en) * 1995-12-28 1998-12-15 International Business Machines Corporation Global variable coalescing

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09274570A (en) * 1996-04-08 1997-10-21 Mitsubishi Electric Corp Compile method and compiler system
US5937195A (en) * 1996-11-27 1999-08-10 Hewlett-Packard Co Global control flow treatment of predicated code
US6016398A (en) * 1997-04-01 2000-01-18 Intel Corporation Method for using static single assignment to color out artificial register dependencies
US6072951A (en) * 1997-10-15 2000-06-06 International Business Machines Corporation Profile driven optimization of frequently executed paths with inlining of code fragment (one or more lines of code from a child procedure to a parent procedure)
US7337173B1 (en) * 1997-12-04 2008-02-26 Netscape Communications Corporation Compiler having global element optimization
US6029000A (en) * 1997-12-22 2000-02-22 Texas Instruments Incorporated Mobile communication system with cross compiler and cross linker
US6175956B1 (en) * 1998-07-15 2001-01-16 International Business Machines Corporation Method and computer program product for implementing method calls in a computer system
US6195793B1 (en) * 1998-07-22 2001-02-27 International Business Machines Corporation Method and computer program product for adaptive inlining in a computer system
US6983459B1 (en) * 1999-04-06 2006-01-03 International Business Machines Corporation Incorporating register pressure into an inlining compiler
JP4462676B2 (en) * 1999-10-27 2010-05-12 富士通株式会社 Program conversion device, compiler device, and computer-readable recording medium recording program conversion program
US6862730B1 (en) * 2000-04-26 2005-03-01 Lucent Technologies Inc. Register allocation in code translation between processors
US6658656B1 (en) * 2000-10-31 2003-12-02 Hewlett-Packard Development Company, L.P. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
US7086044B2 (en) * 2001-03-22 2006-08-01 International Business Machines Corporation Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
US7017154B2 (en) * 2001-03-23 2006-03-21 International Business Machines Corporation Eliminating store/restores within hot function prolog/epilogs using volatile registers
US7010785B2 (en) * 2001-03-23 2006-03-07 International Business Machines Corporation Eliminating cold register store/restores within hot function prolog/epilogs
US7275242B2 (en) * 2002-10-04 2007-09-25 Hewlett-Packard Development Company, L.P. System and method for optimizing a program
US7269827B2 (en) * 2002-10-21 2007-09-11 Intel Corporation Method and apparatus for compiling code
US7146606B2 (en) * 2003-06-26 2006-12-05 Microsoft Corporation General purpose intermediate representation of software for software development tools
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7707566B2 (en) 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7120898B2 (en) 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US7661095B2 (en) * 2005-04-14 2010-02-09 Hewlett-Packard Development Company, L.P. System and method to build a callgraph for functions with multiple entry points
US7493602B2 (en) * 2005-05-02 2009-02-17 International Business Machines Corporation Methods and arrangements for unified program analysis
US20070089104A1 (en) * 2005-10-13 2007-04-19 Arie Tal Method and system for managing heuristic properties
US7987452B2 (en) * 2005-12-15 2011-07-26 International Business Machines Corporation Profile-driven lock handling
US8769511B2 (en) * 2006-02-16 2014-07-01 The Regents Of The University Of California Dynamic incremental compiler and method
US8117604B2 (en) * 2006-07-31 2012-02-14 International Business Machines Corporation Architecture cloning for power PC processors
US8370821B2 (en) * 2007-08-21 2013-02-05 International Business Machines Corporation Method for enabling profile-based call site tailor-ing using profile gathering of cloned functions
US8473935B2 (en) * 2008-04-21 2013-06-25 Microsoft Corporation Just-ahead-of-time compilation
US8522218B2 (en) * 2010-03-12 2013-08-27 Microsoft Corporation Cross-module inlining candidate identification
JP6080602B2 (en) 2013-02-22 2017-02-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Real footprint calculation method, method for determining inline method using the calculation method, apparatus and program
US9027007B2 (en) * 2013-03-06 2015-05-05 Qualcomm Incorporated Reducing excessive compilation times
US9996325B2 (en) 2013-03-06 2018-06-12 Qualcomm Incorporated Dynamic reconfigurable compiler

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428793A (en) * 1989-11-13 1995-06-27 Hewlett-Packard Company Method and apparatus for compiling computer programs with interproceduural register allocation
US5339238A (en) * 1991-03-07 1994-08-16 Benson Thomas R Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph
US5301325A (en) * 1991-03-07 1994-04-05 Digital Equipment Corporation Use of stack depth to identify architechture and calling standard dependencies in machine code
US5339428A (en) * 1991-09-04 1994-08-16 Digital Equipment Corporation Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5797012A (en) * 1995-12-28 1998-08-18 International Business Machines Corporation Connectivity based program partitioning
US5850549A (en) * 1995-12-28 1998-12-15 International Business Machines Corporation Global variable coalescing

Also Published As

Publication number Publication date
JP3337174B2 (en) 2002-10-21
EP0651327A2 (en) 1995-05-03
US5768595A (en) 1998-06-16
EP0651327A3 (en) 1995-06-21
CA2102089C (en) 1999-05-25
JPH07129412A (en) 1995-05-19

Similar Documents

Publication Publication Date Title
CA2102089A1 (en) Recompilation of Computer Programs for Enhanced Optimization
Wall Systems for late code modification
EP1280056B1 (en) Generation of debugging information
US5530964A (en) Optimizing assembled code for execution using execution statistics collection, without inserting instructions in the code and reorganizing the code based on the statistics collected
US7877741B2 (en) Method and corresponding apparatus for compiling high-level languages into specific processor architectures
EP0806725B1 (en) Method and apparatus for early insertion of assembler code for optimization
EP0778522A3 (en) System and method for generating trusted, architecture specific, compiled versions of architecture neutral programs
KR19990037014A (en) Site-specific message dispatching in object-oriented systems
EP0838756A1 (en) Method and apparatus for performing interpreter based operations in a computer
CA2082066A1 (en) Software debugging system and method especially adapted for code debugging within a multi-architecture environment
US20040221273A1 (en) Method and apparatus for performing incremental validation of program code conversion
Small et al. MiSFIT: Constructing safe extensible systems
EP0887747A3 (en) Data model compiler
JP2000267862A (en) Hybrid just-in-time compiler for minimizing consumption of resources
US20100095069A1 (en) Program Security Through Stack Segregation
EP0327195A3 (en) Processor simulation
US20030046449A1 (en) Efficient virtual function calls for compiled/interpreted environments
Pu et al. Microlanguages for operating system specialization
US20020010913A1 (en) Program profiling
WO1999031579A3 (en) Computer instruction which generates multiple data-type results
MX9805682A (en) Distributed processing.
US6086622A (en) Method and apparatus for converting an architecture of a program and method, and apparatus for debugging a program by using them
CA2240584A1 (en) Compile-time data dependency verification
WO2000065440A3 (en) Exception handling method and apparatus for use in program code conversion
ES2181476T3 (en) APPLICATION MANAGER WITH VARIABLE MANAGEMENT INSTRUCTION SET.

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed