EP0669574A2 - Procédé et système de transformation de programmes - Google Patents

Procédé et système de transformation de programmes Download PDF

Info

Publication number
EP0669574A2
EP0669574A2 EP95102626A EP95102626A EP0669574A2 EP 0669574 A2 EP0669574 A2 EP 0669574A2 EP 95102626 A EP95102626 A EP 95102626A EP 95102626 A EP95102626 A EP 95102626A EP 0669574 A2 EP0669574 A2 EP 0669574A2
Authority
EP
European Patent Office
Prior art keywords
node
optimized
predetermined
nodes
program
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.)
Ceased
Application number
EP95102626A
Other languages
German (de)
English (en)
Other versions
EP0669574A3 (fr
Inventor
Hiroko Isozaki
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of EP0669574A2 publication Critical patent/EP0669574A2/fr
Publication of EP0669574A3 publication Critical patent/EP0669574A3/fr
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Definitions

  • the present invention relates to a program transformation processing system and a program transformation processing method, and more specifically to a program transformation processing system and a program transformation processing method, for optimizing a language processing program such as a compiler.
  • a compiler is a language processing program for translating a source program written in a high level language into a machine language program which can be executed by a computer, namely, an object module (called "object” hereinafter).
  • object an object module
  • a software processed by this kind of language processing program is required to be executed at a high processing speed.
  • the language processing program has adopted various optimizing methods, for example, to delete or modify redundant operations on the object, and to replace an operation needing a relatively long execution time, with another kind of program requiring only a short execution time.
  • the optimization is divided into a local optimization and a global optimization.
  • a program extent the extend of a basic block
  • expressions and assignment statements are continuously executed with their order being not changed, without branching from the mid way of the program to an external and without branching from an external to the mid way of the program.
  • an extent exceeding the basic block such as a syntax elements in which a branch occurs at a plurality of positions, for example, a compound statement, a for statement (repeating statement), a procedure, and a function. Since the global optimization is required to analyze and convert the program over a widen extent, the compiling time corresponding becomes long, but more sophisticated optimization can be realized. Therefore, the global optimization has a great advantage.
  • FIG. 1 there is shown a block diagram illustrating a conventional program transformation processing system configured to perform the global optimization.
  • This conventional program transformation processing system includes a source file 1 for storing a source program, a language processing part 2 receiving the source program for executing the optimizing processing on the received source program so as to generate an object code, and an object file 9 receiving and storing the generated object code.
  • the language processing part 2 includes a syntax analysis part 3 receiving the source program for analyzing the syntax so as to generate intermediate codes corresponding to the source program, an intermediate file 4 receiving and storing the generated intermediate codes, a data-flow analyzing part 5 receiving the intermediate codes for executing a data-flow analysis, an optimization processing part 6 for performing the optimization processing on the basis of the result of the data-flow analysis, another intermediate file 7 for storing intermediate data which is the result of the optimization processing, and a code generator 8 receiving the intermediate data for generating object codes.
  • a syntax analysis part 3 receiving the source program for analyzing the syntax so as to generate intermediate codes corresponding to the source program
  • an intermediate file 4 receiving and storing the generated intermediate codes
  • a data-flow analyzing part 5 receiving the intermediate codes for executing a data-flow analysis
  • an optimization processing part 6 for performing the optimization processing on the basis of the result of the data-flow analysis
  • another intermediate file 7 for storing intermediate data which is the result of the optimization processing
  • a code generator 8 receiving the intermediate data for generating object codes.
  • the syntax analysis part 3 receives the source program from the source file 1, and analyzes the content of the received source program and generates the intermediate codes by transforming the source program into a form which can be language-processed.
  • the intermediate codes are stored in the intermediate file 4.
  • the data-flow analyzing part 5 receives the intermediate codes from the intermediate file 4, and executes the data-flow analysis which will be explained later.
  • the optimization processing part 6 performs various optimization processing, for example, common subexpression elimination, and register allocation.
  • the intermediate data which is the result of the optimization processing, is stored in the intermediate file 7.
  • the code generator 8 receives the intermediate data from the intermediate file 7 and generates the object codes, which are stored in the object file 9.
  • the intermediate codes are read out from the intermediate file, are divided into basic blocks which is a unit, all statements included in which are continuously executed. Then, information concerning a flow of control for the processing execution is added to a set of basic blocks thus prepared, so that a flow graph is generated.
  • the flow graph expresses a flow of processings in the form of a graph having a direction, in which each node is constituted of one string of statements or intermediate language sequentially executed, and a edge is formed by a flow of controls coupling between nodes.
  • Figure 2 illustrates one example of a source program for which the optimization processing is performed.
  • the source program shown in these figures contains a "if" statement in which an alternative selection (one out of two) is performed in accordance with a condition.
  • Figure 3A which illustrates a flow graph corresponding to the source program shown in Figure 2, the source program shown in Figure 2 is divided into four basic blocks B1, B2, B3 and B4.
  • a first block B1 is called an "initial node".
  • each of the blocks B1 and B3 including the "if" statement is branched into two.
  • an available subexpression which is information required to eliminate common subexpressions.
  • the available subexpression will be called an available expression.
  • Figure 3B which is a flow graph illustrating the available expression, an expression x+y is available at a point p of an arbitrary position, if every path from the initial node block B1 B to the node p (set on the block B5B in this example) evaluates the expression x+y and after the last such evaluation prior to reaching the point p, there is no subsequent assignment to x or y.
  • a first processing for seeking the information for the available expression is to read the previously prepared flow graph, and to seek a set of subexpression generated for each basic block (called a generated expression") and a set of subexpression killed for each basic block (called a "killed expression").
  • a generated expression a set of subexpression generated for each basic block
  • a killed expression a set of subexpression killed for each basic block
  • an available expression is sought.
  • a whole set of subexpressions appearing at a right side of statements in a program is "U”
  • a set of available expressions at the initial point in a block Bi is "in[Bi]”
  • a set of available expressions at the final point in the block Bi is "out[Bi]”
  • the generated expression set and the killed expression set in the block Bi are e gen[Bi] and e_kill[Bi], respectively.
  • Elimination of global common subexpressions which is the object of the processing, is performed as follows in the optimization processing part 6 using the information of available expressions obtained as mentioned above.
  • Figure 3C illustrates the result of the global common subexpression elimination made for the flow graph shown in Figure 3A.
  • a memory region for temporarily storing not only the intermediate codes but also data which is generally of a bit vector type for the above mentioned generated expression set and killed expression set.
  • This data of the bit vector type is such that, the number "i” is allocated to an expression to be analyzed in the flow graph, and if the number "i" belongs to the set to be obtained, the position "i" of the bit vector is expressed as "1". Accordingly, the data length of the bit vector, in one block, for example for the generated expression set is at least the bit length of the same number as the number of the generated expressions in the block concerned.
  • data of the bit vector type is formed similarly.
  • Japanese Patent Application Laid-open Publication JP-A-64-003737 has proposed a second conventional program transformation method, which is, however, directed to a C-language compiler.
  • this second conventional program transformation method address calculation and subscript expression are searched using an analysis tree, and if two common expressions giving the same operation result is found out, one of the found-out common expressions is eliminated.
  • the above mentioned first conventional program transformation processing system and method require a great number of processing steps for the data-flow analysis, and therefore, needs a long processing time.
  • a large capacity memory region is required for temporarily storing not only the intermediate codes but also various data in the course of the processing, such as the generated expression set and killed expression set corresponding to the basic block and the set of available expressions.
  • the optimization becomes impossible in certain cases. In this case, the size of the generated object may become large, and the processing speed may become low.
  • the above mentioned second conventional program transformation processing system and method is disadvantageous in that one to be processed is limited to the address calculation and the subscript expression, and no consideration is made onto the case exceeding the basic block and on other general subexpressions.
  • Another object of the present invention is to provide a program transformation processing system and method, which requires only a reduced memory region and which can executes its processing with a shortened processing time.
  • a program transformation processing system comprising a syntax analyzing means receiving a source program for analyzing the syntax of the received source program and generating intermediate codes in a predetermined format, and an optimization processing means receiving the intermediate codes to perform a predetermined optimization processing for generating an object code having as small program size as possible and as short execution time as possible, the optimization processing means including a candidate intermediate code selection means for selecting from the intermediate codes an optimization candidate intermediate code which meets with a predetermined selection condition and which has possibility of one being to be optimized, an optimized pattern extracting means for performing a searching using the candidate intermediate code as a starting point, to extract an optimized pattern which is a pattern of the intermediate codes to be optimized, and an optimized intermediate code outputting means for outputting an an optimized intermediate code corresponding to the optimized pattern.
  • a program transformation processing method configured to receive a source program for analyzing the syntax of the received source program and generating intermediate codes in a syntax tree structure composed of nodes in a predetermined format, and then to receive the intermediate codes to perform a predetermined optimization processing for generating an object code having as small program size as possible and as short execution time as possible, the program transformation processing method comprising a first step of receiving the intermediate codes and performing a search by reading nodes of the syntax trees in accordance with a predetermined evaluation order, for the purpose of outputting the read nodes; a second step of selecting from the read nodes an optimization candidate intermediate node which meets with a predetermined selection condition and which has possibility of one being to be optimized; a third step of searching and detecting a directly nested node which is a node directly coupled to a predetermined constitutive word of the candidate node; a fourth step of discriminating whether or not a second conditional node equal to a first conditional node corresponding to a predetermined first condition
  • FIG. 5 there is shown a block diagram illustrating an embodiment of the program transformation processing system in accordance with the present invention.
  • elements corresponding to those shown in Figure 1 are given the same Reference Numerals, and explanation thereof will be omitted for simplification of description.
  • the shown embodiment of the program transformation processing system comprises, in place of the language processing part 2 shown in Figure 1, a language processing part 2A including a transformation processing part 10 in place of the data flow analyzing part 5 and the optimization processing part 6 shown in Figure 1.
  • the transformation processing part 10 includes a candidate intermediate code selection part 11 for selecting an intermediate code which has possibility of optimum, namely, is a candidate for optimization, an optimized pattern extracting part 12 for extracting an optimizable pattern from a syntax tree having the selected candidate intermediate code as an originating node, and an optimum intermediate code outputting part 13 for outputting an optimum intermediate code corresponding to the extracted optimizable pattern.
  • Figures 2 and 5 Figures 6A and 6B respectively illustrating syntax trees obtained by transforming a portion of the source program shown in Figure 2, and Figure 7 showing a flow chart illustrating an optimization processing of the above mentioned syntax trees performed in the transformation processing part 10.
  • the syntax analyzing part 3 receives the source program from the source file 1, and analyzes the content of the received source program so as to generate a syntax tree which is an intermediate code, which is then stored in the intermediate file 4.
  • the candidate intermediate code selection part 11 reads the syntax tree from the intermediate file 4 so as to search the syntax tree in accordance with an ordinary evaluation order (Step S2 in Figure 7). If the node having possibility of optimization, namely, the optimization candidate node is selected (Step S3 in Figure 7), the control is shifted to the optimized pattern extracting part 12. In this embodiment, attention is paid to the "if" node as the above mentioned optimization candidate node. In the optimized pattern extracting part 12, there is examined whether or not the selected "if" node is directly nested (Step S4 in Figure 7).
  • the "direct nesting” means that, in the above mentioned syntax tree, the "if-then-else” node is directly coupled to "then” or “else” constituting the "if-then-else” in a node corresponding to an "if” statement in the source program. Therefore, if "if-then-else” node is coupled through another statement to "then” or “else”, it is not said that it is directly nested.
  • the syntax tree before transformation includes a second "if" node directly nested to the first "if” node corresponding to the "if" statement on the second line in the source program shown in Figure 2, conditional expressions 101 and 102 coupled to "if" of the first and second "if” nodes, and expression nodes 103 and 104 included in the conditional expressions 101 and 102.
  • a target node to be searched is determined in accordance with the execution order of the evaluation of the conditional expression 101.
  • the expression node 103 composed of the node [a + b] is considered, and whether or not the same expression node exists in the conditional expression 102 is searched.
  • This conditional expression 102 is similarly searched n accordance with the execution order of the evaluation.
  • the nodes at a left side of [ ⁇ ] is searched, but since it is not an operation node, the processing further advances.
  • the nodes at a right side of [ ⁇ ] is searched.
  • the expression node 104 [a + b] is the same node as the expression node 103 to be compared, and therefore, a pattern matching is obtained.
  • conditional expression 102 does not include a further node [a+b]
  • the processing moves into a transformation of the syntax tree. If the "if" statement is nested deeper than the example shown in Figure 6A, and if other conditional expressions exist, the above mentioned movement of the processing is performed after the node [a+b] has been searched in the other conditional expressions.
  • a second target node to be searched is the conditional expression 101A which is a node [t + c] including the just preceding transformed portion.
  • the conditional expression 101A includes only the node [d + t], it is different from the second target node. Therefore, the transformation is not performed.
  • conditional expression includes an operator which has an action modifying the value of a variable, such as a substitution operator or a mon- adic operator increasing an operand by one, the optimization cannot be made on statements following the "if" node to be considered. Therefore, the control returns to the candidate intermediate code selecting part.
  • the presence of these operators can be detected by the expression node search at the time of extracting the common subexpression.
  • the processing is applied to an instruction set for the NEC 78K series single chip microcomputer uPD78328 described in "NEC 16/8 bit Single Chip Microcomputer ⁇ PD 78328 User's Manual IEU-693E", 1993, Pages 205-224.
  • Figure 8A illustrating an object which is a code output result corresponding to the source program shown in Figure 2, obtained by the above mentioned optimization processing, it will be noted that the calculation of [a+b] is performed only one time by an instruction statement 51, since [a + b] is moved to a forward position.
  • Figure 8B there is illustrated an object which is a code output result corresponding to the source program shown in Figure 2, in the case that the above mentioned optimization processing is not applied.
  • Figure 9 is a flow chart illustrating the second embodiment of the program transformation processing method.
  • the second embodiment is different from the first embodiment in that the second embodiment includes steps S14 to S16 in place of the steps S4 to S6 in the first embodiment.
  • the first embodiment is so configured to pay attention to the "if" node as the optimization candidate node and to extract the common expressions form the conditional expressions so as to move the common expressions before the "if” statement for the purpose of optimizing the intermediate code.
  • the second embodiment is so configured to pay attention to the "if" node as the optimization candidate node, similarly to the first embodiment, but to extract a different optimized pattern so as to generate a corresponding optimized intermediate code.
  • a program transformation processing system for performing the second embodiment of the program transformation processing method is the same as that shown in Figure 5.
  • the syntax analyzing part 3 generates the syntax tree, and the candidate intermediate code selection part 11 searches the generated syntax tree so as to select the "if" node which is the optimization candidate node (Steps S1 to S3 in Figure 9).
  • the optimized pattern extracting part 12 checks whether not not the extracted "if" node and succeeding statements is in a predetermined structure, for example, in a syntax tree structure as shown in Figure 10A corresponding to the following C-language source program (Step 14 in Figure 9).
  • the second condition is that right part subexpressions of the conditional expressions 1 and 2 are the same and left part subexpressions of the conditional expressions 1 and 2 are the same.
  • the "if" statement meeting these conditions is expressed as follows by the syntax tree shown in Figure 10A and the C-language source program.
  • a conditional expression node for comparing the two expressions is put below “if", and if the left part is great (GreaT) in comparison with the right part as the result of the comparison, the processing A node is put under "gt". If the left part is little (LiTtle) in comparison with the right part as the result of the comparison, the processing B node is put under "It”, and if the left part is equal (EQual) to the right part, the processing C node is put under "eq".
  • the processing returns to the optimized pattern extracting part 12, and the Steps S7, S8 and S1 are performed so that the processing is repeated until the search for all the syntax trees from which the "if' node is to be extracted has been completed.
  • FIG. 11 there is shown an object after the transformation which is the result of generating instructions codes of the single chip microcomputer mentioned hereinbefore in connection with the transformed syntax tree.
  • the comparison between "a” and "b” is executed only one time with an instruction statement 71 on line 3.
  • This processing is shortened by 12 bytes in comparison with the code size of the object before transformation.
  • the time for reading the intermediate code is a sum of the reading time for extracting the optimization candidate node after the syntax tree is generated, and a predetermined number of reading in connection with the conditional expressions for checking the optimum possibility of the "if" statement.
  • the predetermined number of reading in connection with the conditional expressions is equal to the number of the highest order nodes, and therefore is not so large since a complicated expression is not ordinarily written.
  • the conditional expressions is only a small part of the whole of the syntax tree.
  • the intermediate codes In the conventional data-flow analysis, on the other hand, the intermediate codes must be read out at least two time, in particular in a reversed direction until the common subexpression is detected. Comparing the first and second embodiments with the conventional example in this intermediate code reading time, the embodiments are extremely shorter than the conventional example.
  • the embodiments, of the present invention do not require an operation processing of the complicated algorithm for solving the data-flow equations.
  • the optimization processing time of the present invention mainly depends upon the searching time, and the extent of the search is limited to only the conditional expressions of the optimization candidate. Accordingly, the search time is not so long.
  • the present invention can greatly reduce the processing time for the optimization.
  • a required memory capacity is examined.
  • the embodiments of the present invention search the intermediate codes themselves, and therefore, do not need an additional memory capacity for holding the information for optimization, which was required in the conventional data-flow analysis. Accordingly, the present invention can remarkably reduce the required memory capacity, and therefore, it is possible to ceaselessly perform the optimization, independently of the size of the source program, in a machine having a limited memory capacity. In other words, with a small capacity of memory and with a high speed processing, it is possible to generate the object which can be executed for a short time.
  • the program transformation processing method in accordance with the present invention is such that, for a source program such as an "if" statement which can be divided into a plurality of basic blocks, the intermediate codes are modified and optimized in the course of the syntax analysis.
  • a source program such as an "if" statement which can be divided into a plurality of basic blocks
  • the intermediate codes are modified and optimized in the course of the syntax analysis.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
EP95102626A 1994-02-23 1995-02-23 Procédé et système de transformation de programmes. Ceased EP0669574A3 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP24589/94 1994-02-23
JP6024589A JP2755154B2 (ja) 1994-02-23 1994-02-23 プログラム変換処理装置およびプログラム変換処理方法

Publications (2)

Publication Number Publication Date
EP0669574A2 true EP0669574A2 (fr) 1995-08-30
EP0669574A3 EP0669574A3 (fr) 1997-07-09

Family

ID=12142350

Family Applications (1)

Application Number Title Priority Date Filing Date
EP95102626A Ceased EP0669574A3 (fr) 1994-02-23 1995-02-23 Procédé et système de transformation de programmes.

Country Status (3)

Country Link
US (1) US5586020A (fr)
EP (1) EP0669574A3 (fr)
JP (1) JP2755154B2 (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0825531A1 (fr) * 1996-08-19 1998-02-25 Nec Corporation Unité et méthode de traitement de language pour la traduction d'un programme source pour la génération d'un fichier module objet
EP0947922A3 (fr) * 1998-04-01 2003-06-25 Matsushita Electric Industrial Co., Ltd. Compilateur
EP2082319A4 (fr) * 2006-10-26 2010-01-20 Steven J Christensen Système, procédé et appareil pour étendre dynamiquement les fonctions des systèmes existants

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226789B1 (en) * 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
JP3305949B2 (ja) * 1996-02-08 2002-07-24 富士通株式会社 プログラム解析装置
JP3137590B2 (ja) * 1996-12-04 2001-02-26 三菱電機株式会社 データ統合手順決定装置およびその応用による物品の製造手順決定装置
US6260191B1 (en) * 1997-04-07 2001-07-10 Hewlett-Packard Company User controlled relaxation of optimization constraints related to volatile memory references
US6145124A (en) * 1997-08-12 2000-11-07 Veronex Technologies, Inc. Software optimization system
US5987256A (en) * 1997-09-03 1999-11-16 Enreach Technology, Inc. System and process for object rendering on thin client platforms
US6665866B1 (en) * 1999-05-28 2003-12-16 Microsoft Corporation Extensible compiler utilizing a plurality of question handlers
ES2166279B1 (es) * 1999-09-09 2003-04-16 Univ Valencia Politecnica Un metodo y sistema para la optimizacion de programas multiparadigma por transformacion automatica.
US20020100031A1 (en) * 2000-01-14 2002-07-25 Miguel Miranda System and method for optimizing source code
JP3430252B2 (ja) * 2000-01-24 2003-07-28 独立行政法人産業技術総合研究所 ソースコード変換方法、ソースコード変換プログラムを記録した記録媒体及びソースコード変換装置
US20020038453A1 (en) * 2000-08-09 2002-03-28 Andrew Riddle Method and system for software optimization
IL158696A0 (en) * 2001-05-11 2004-05-12 Computer Ass Think Inc Method and system for transforming legacy software applications into modern object-oriented systems
US20050268305A1 (en) * 2001-06-07 2005-12-01 Hostetter Mathew J Software atomization
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
US7117507B2 (en) * 2002-06-03 2006-10-03 Sumisho Computer Systems Corporation Software atomization
US7281017B2 (en) * 2002-06-21 2007-10-09 Sumisho Computer Systems Corporation Views for software atomization
US6754878B1 (en) * 2003-03-27 2004-06-22 Xilinx, Inc. Recognizing structure information from a netlist
US7367023B2 (en) * 2003-07-10 2008-04-29 International Business Machines Corporation Method and apparatus for generating computer programming code selectively optimized for execution performance and not optimized for serviceability
US7426716B2 (en) * 2003-07-11 2008-09-16 Board Of Regents, The University Of Texas System Recovery and representation of object interaction in an object oriented program
US8984496B2 (en) * 2004-09-20 2015-03-17 The Mathworks, Inc. Extensible internal representation of systems with parallel and sequential implementations
KR100902461B1 (ko) 2005-02-03 2009-06-11 미쓰비시덴키 가부시키가이샤 프로그램 코드 생성 지원 장치 및 방법, 프로그램실행장치와 방법, 프로그램 코드 압축 처리 장치 및 방법과그들의 프로그램
US7913239B2 (en) * 2005-03-08 2011-03-22 International Business Machines Corporation Method and apparatus for a programming framework for pattern matching and transformation of intermediate language expression trees
KR100692172B1 (ko) * 2005-03-30 2007-03-12 아이티플러스 주식회사 종합 문자열 분석기 및 그 분석 방법
US9774699B2 (en) * 2005-09-20 2017-09-26 The Mathworks, Inc. System and method for transforming graphical models
JP4860240B2 (ja) * 2005-11-11 2012-01-25 パナソニック株式会社 翻訳方法および実行通知命令の埋め込み方法
JP5016288B2 (ja) * 2006-10-19 2012-09-05 株式会社日立製作所 最適化処理方法、及びその言語処理系
US8813057B2 (en) * 2007-03-31 2014-08-19 Intel Corporation Branch pruning in architectures with speculation support
US9235390B1 (en) * 2008-03-31 2016-01-12 Symantec Corporation Application optimization for use based on feature popularity
US7685565B1 (en) 2009-03-19 2010-03-23 International Business Machines Corporation Run time reconfiguration of computer instructions
JP5110111B2 (ja) * 2010-03-23 2012-12-26 株式会社デンソー 中間モジュールの生成方法及び支援装置
WO2014115189A1 (fr) 2013-01-28 2014-07-31 Nec Corporation Procédé et système de transformation de scripts de spécification en code de programme
JP6536266B2 (ja) * 2015-08-03 2019-07-03 富士通株式会社 コンパイル装置、コンパイル方法およびコンパイルプログラム
JP6496640B2 (ja) * 2015-09-14 2019-04-03 株式会社エクサ Cobolソースコード変換プログラム
KR102327913B1 (ko) * 2017-04-28 2021-11-19 엔에이치엔 주식회사 블록 기반 데이터 분석 방법 및 시스템
US10459829B2 (en) * 2017-06-07 2019-10-29 M/S. Cigniti Technologies Limited Overall test tool migration pipeline
CN114594954A (zh) * 2020-12-07 2022-06-07 华为技术有限公司 一种代码优化方法、装置、计算设备及计算机存储介质
JP7835035B2 (ja) * 2022-02-14 2026-03-25 日本電気株式会社 コンパイル装置、コンパイル方法、及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4656583A (en) * 1984-08-13 1987-04-07 International Business Machines Corporation Method for improving global common subexpression elimination and code motion in an optimizing compiler
JPH0685148B2 (ja) * 1986-03-07 1994-10-26 株式会社日立製作所 配列デ−タフロ−解析装置
US4841570A (en) * 1987-05-11 1989-06-20 The United States Of America As Represented By The United States Department Of Energy One-way transformation of information
JPS643737A (en) * 1987-06-26 1989-01-09 Fujitsu Ltd Common formula deleting method
IE920032A1 (en) * 1991-01-11 1992-07-15 Marconi Gec Ltd Parallel processing apparatus
JPH04241023A (ja) * 1991-01-25 1992-08-28 Hitachi Ltd プログラム合成方法
WO1992015941A1 (fr) * 1991-02-27 1992-09-17 Digital Equipment Corporation Methode de construction d'un mecanisme a repliement constant dans un programme compilateur optimiseur multilangage
US5485619A (en) * 1993-12-29 1996-01-16 International Business Machines Corporation Array variable transformation system employing subscript table mapping to scalar loop indices

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0825531A1 (fr) * 1996-08-19 1998-02-25 Nec Corporation Unité et méthode de traitement de language pour la traduction d'un programme source pour la génération d'un fichier module objet
EP0947922A3 (fr) * 1998-04-01 2003-06-25 Matsushita Electric Industrial Co., Ltd. Compilateur
EP2082319A4 (fr) * 2006-10-26 2010-01-20 Steven J Christensen Système, procédé et appareil pour étendre dynamiquement les fonctions des systèmes existants

Also Published As

Publication number Publication date
US5586020A (en) 1996-12-17
JPH07234790A (ja) 1995-09-05
JP2755154B2 (ja) 1998-05-20
EP0669574A3 (fr) 1997-07-09

Similar Documents

Publication Publication Date Title
US5586020A (en) Program transformation processing system and method
US4773007A (en) Complier code optimization method for a source program having a first and second array definition and use statements in a loop
Allen et al. Automatic translation of Fortran programs to vector form
EP0533813B1 (fr) Procede de representation de dependances de donnees scalaires pour un compilateur optimiseur
US8024718B2 (en) System and method for optimizing source code
US6113650A (en) Compiler for optimization in generating instruction sequence and compiling method
US5274812A (en) Method of compiling source code into vectorized object code by performing a one-dimensional analysis on each dimension of a multi-dimensional array within a loop
US5109331A (en) Compiling a source program by analyzing a subscript of an array included in a loop processing of a computer
US6983458B1 (en) System for optimizing data type definition in program language processing, method and computer readable recording medium therefor
US7089545B2 (en) Detection of reduction variables in an assignment statement
US20040154009A1 (en) Structuring program code
US4853872A (en) Program execution method in a system having plural computers
US5596732A (en) Method of optimizing instruction sequence of compiler
US5522074A (en) Vectorization system for vectorizing loop containing condition induction variables
Magaud Changing data representation within the Coq system
US20030233640A1 (en) Structuring program code
EP0692115B1 (fr) Systeme de conversion de fonctions boucles en style de transfert de continuations
US20050144605A1 (en) Information processing system and code generation method
Blech et al. A formal correctness proof for code generation from SSA form in Isabelle/HOL
Kipps Analysis of Tomita’s algorithm for general context-free parsing
Arenaz et al. Compiler support for parallel code generation through kernel recognition
EP1465068A1 (fr) Améliorations pour structurer le code d'un programme
JP2555011B2 (ja) ベクトルデ−タ処理方式
Bataev LLVM SLP Vectorizer
Alblas Optimal incremental simple multi-pass attribute evaluation

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): DE FR GB

PUAL Search report despatched

Free format text: ORIGINAL CODE: 0009013

AK Designated contracting states

Kind code of ref document: A3

Designated state(s): DE FR GB

17P Request for examination filed

Effective date: 19970922

17Q First examination report despatched

Effective date: 19991015

RTI1 Title (correction)

Free format text: PROGRAM TRANSFORMATION PROCESSING METHOD

GRAG Despatch of communication of intention to grant

Free format text: ORIGINAL CODE: EPIDOS AGRA

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20020520