CA2102089A1 - Recompilation of Computer Programs for Enhanced Optimization - Google Patents
Recompilation of Computer Programs for Enhanced OptimizationInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
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.
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)
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)
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)
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 |
-
1993
- 1993-10-29 CA CA002102089A patent/CA2102089C/en not_active Expired - Fee Related
-
1994
- 1994-08-04 JP JP18380294A patent/JP3337174B2/en not_active Expired - Fee Related
- 1994-10-14 EP EP94307568A patent/EP0651327A3/en not_active Withdrawn
-
1996
- 1996-02-07 US US08/598,065 patent/US5768595A/en not_active Expired - Fee Related
Cited By (2)
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 |