JPWO2007096935A1 - プログラム解析方法、プログラム解析装置およびプログラム解析プログラム - Google Patents
プログラム解析方法、プログラム解析装置およびプログラム解析プログラム Download PDFInfo
- Publication number
- JPWO2007096935A1 JPWO2007096935A1 JP2008501494A JP2008501494A JPWO2007096935A1 JP WO2007096935 A1 JPWO2007096935 A1 JP WO2007096935A1 JP 2008501494 A JP2008501494 A JP 2008501494A JP 2008501494 A JP2008501494 A JP 2008501494A JP WO2007096935 A1 JPWO2007096935 A1 JP WO2007096935A1
- Authority
- JP
- Japan
- Prior art keywords
- program
- graph
- reduced
- vertex
- dependency
- 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
- 238000000034 method Methods 0.000 claims description 94
- 230000008569 process Effects 0.000 claims description 74
- 230000007850 degeneration Effects 0.000 claims description 38
- 230000008878 coupling Effects 0.000 claims description 26
- 238000010168 coupling process Methods 0.000 claims description 26
- 238000005859 coupling reaction Methods 0.000 claims description 26
- 230000001419 dependent effect Effects 0.000 claims description 22
- 230000009467 reduction Effects 0.000 claims description 8
- 238000005457 optimization Methods 0.000 abstract description 26
- 238000004364 calculation method Methods 0.000 abstract description 12
- 238000004458 analytical method Methods 0.000 abstract description 11
- 230000006870 function Effects 0.000 description 36
- 230000002441 reversible effect Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000011946 reduction process Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
本発明の目的は、可逆性を有する縮退されたプログラム依存グラフを生成することにより、大規模ソフトウエアの解析および最適化を現実的な時間で実現することである。
図1は、本発明の第1の実施形態を示している。プログラム解析装置100は、プログラム解析プログラム等を記憶するメモリ装置MEM、プログラム解析プログラムを実行するプロセッサCPUを有している。プログラム解析装置100は、例えば、パーソナルコンピュータまたはワークステーション等により構成される。メモリ装置MEMは、例えば、ハードディスクドライブ装置である。プログラム解析装置100には、ディスプレイDISP、キーボードやマウス等の入力デバイスINPUT、およびディスクドライブ装置DRVが接続されている。
まず、ステップS100において、メモリ装置MEMに読み込まれた逐次プログラムが解析され、依存関係が抽出される。これにより、プログラム依存グラフPDG等のプログラム解析情報が生成される。プログラム解析情報は、プログラムの文および制御の依存関係を表す複数の依存要素で構成される。ステップS100の処理は、従来のプログラム依存グラフPDGの生成処理と同じである。
(1)制御フローグラフにおける逆辺(back-edge) e=(v,w)について、頂点wが頂点vを支配する(dominant)。
(2)頂点vをエントリとする自然なループ(非特許文献4)について、ループ内のいずれの頂点wも頂点vを後支配(post-dominant)しない。
<性質>:プログラム依存グラフPDG上の頂点の集合Vxであって、頂点の集合Vxに属する頂点が、対応する制御フローグラフCFG上でハンモックHを形成する。
このように、本実施形態では、まず、縮退したプログラム依存グラフPDGから適切なプログラムのコードを生成可能とするために、元のプログラムにおいて、上述した条件(1)あるいは条件(2)を満足しない部分プログラムについては、適切なハンモックを求め、縮退する。縮退した部分プログラムの制御の流れの情報は、付加情報として保存し、プログラムコードを生成するときに利用する。さらに、プログラム依存グラフPDGの規模を縮小するために、複数の頂点を1つの頂点に縮退する場合、その頂点は制御フローグラフCFG上で、ハンモックHを形成することを条件とする(縮退可能な条件)。
(3)エントリ頂点とイクジット頂点を持つ。
(4)ハンモックH外の頂点vからハンモックH内の頂点uを間の有向パスは必ずエントリ頂点を通る。
(5)ハンモックH内の頂点uからハンモック外の頂点wへの有向パスは必ずイクジット頂点を通る。
以上、第1の実施形態では、プログラム依存グラフPDGの規模(頂点数および辺数)を減らすために、プログラム依存グラフPDGの依存要素(依存関係)を縮退して頂点を融合し、粗粒度のプログラム依存グラフPDGを作成する。これにより、縮退されたプログラム依存グラフPDGの規模を元のプログラム依存グラフPDGに比べて大幅に小さくすることが可能になる。したがって、プログラムの並列化処理等の最適化に必要な計算量(計算時間)を削減できる。すなわち、大規模ソフトウエアの解析および最適化を現実的な時間で実現できる。
図7は、本発明の第2の実施形態を示している。第1の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態では、抽象構文木に基づいてプログラム依存グラフPDGが縮退される。このために、プログラムの抽象構文木表現AST(Abstract Syntax Tree)および文レベルのプログラム依存グラフPDGが入力される。プログラム解析装置が実施する処理は、図2に示したステップS200の処理を除き第1の実施形態と同じである。具体的には、図3に示した処理の代わりに、図7に示した処理が実施される。ステップS520は、図3のステップS500に対応する処理である。ステップS720は、図3のステップS700に対応する処理である。ステップS520を実行するプロセッサCPUは、縮退判定部として機能する。ステップS720を実行するプロセッサCPUは、グラフ生成部として機能する。その他の構成および処理は、図1および図2と同じである。
図8は、本発明の第3の実施形態を示している。第1および第2の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態では、第2の実施形態(図7)の探索および変換の手順を簡略化するために、プログラムの抽象構文木表現ASTのみが入力される。プログラム解析装置が実施する処理は、図2に示したステップS200の処理を除き第1の実施形態と同じである。具体的には、図3に示した処理の代わりに、図8に示した処理が実施される。ステップS530は、図3のステップS500に対応する処理である。ステップS730、S732は、図3のステップS700に対応する処理である。ステップS630は、図3のステップS500Aに対応する処理である。ステップS530、S630を実行するプロセッサCPUは、縮退判定部として機能する。ステップS730、S732を実行するプロセッサCPUは、グラフ生成部として機能する。その他の構成および処理は、図1および図2と同じである。
図10は、本発明の第4の実施形態を示している。第1の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態は、プログラム依存グラフPDGに基づいてこのプログラム依存グラフPDGを縮退するための基本原理を示している。プログラム解析装置が実施する処理は、図2に示したステップS200の処理を除き第1の実施形態と同じである。具体的には、図3に示した処理の代わりに、図10に示した処理が実施される。ステップS540は、図3のステップS500Aに対応する処理である。ステップS542、S544は、図3のステップS500に対応する処理である。ステップS640は、図3のステップS600に対応する処理である。ステップS740は、図3のステップS700に対応する処理である。ステップS540、S542、S544、S640を実行するプロセッサCPUは、縮退判定部として機能する。ステップS740を実行するプロセッサCPUは、グラフ生成部として機能する。その他の構成および処理は、図1および図2と同じである。
(6)対応する制御フローグラフCFG上で、頂点集合の外から頂点集合の内への分岐は、頂点集合の先頭頂点へのみである。対応する制御フローグラフCFG上で、頂点集合の内から頂点集合の外への分岐は、頂点集合の最後の頂点のみである。
(7)頂点間のデータ依存パスに外部の頂点は含まれない。
以上、第4の実施形態においても、上述した第1の実施形態と同様の効果を得ることができる。さらに、この実施形態では、プログラム依存グラフPDGのみを用いることにより、規模が小さく、かつ可逆性が保証されたプログラム依存グラフPDGを生成できる。
(1)制御フローグラフにおける逆辺(back-edge) e=(v,w)について、頂点wが頂点vを支配する(dominant)。
(2)頂点vをエントリとする自然なループ(非特許文献4)について、ループ内のいずれの頂点wも頂点vを後支配(post-dominant)しない。
<性質>:プログラム依存グラフPDG上の頂点の集合Vxであって、頂点の集合Vxに属する頂点が、対応する制御フローグラフCFG上でハンモックHを形成する。
(3)エントリ頂点とイクジット頂点を持つ。
(4)ハンモックH外の頂点vからハンモックH内の頂点uを間の有向パスは必ずエントリ頂点を通る。
(5)ハンモックH内の頂点uからハンモック外の頂点wへの有向パスは必ずイクジット頂点を通る。
(6)対応する制御フローグラフCFG上で、頂点集合の外から頂点集合の内への分岐は、頂点集合の先頭頂点へのみである。対応する制御フローグラフCFG上で、頂点集合の内から頂点集合の外への分岐は、頂点集合の最後の頂点のみである。
(7)頂点間のデータ依存パスに外部の頂点は含まれない。
(付記1)
プログラムの文および制御の依存関係を表す複数の依存要素で構成されるプログラム解析情報を用いて、可逆的に縮退可能な依存要素群を求め、求めた依存要素群を縮退することで依存要素が縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。
(付記2)
付記1記載のプログラム解析方法において、
プログラム解析情報として制御フローグラフおよびプログラム依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素についてハンモックを探索し、探索されたハンモックを縮退することで縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。
(付記3)
付記1記載のプログラム解析方法において、
プログラム解析情報としてプログラムの抽象構文木表現およびプログラム依存グラフを用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存グラフ上の頂点集合を1つの頂点に縮退することで縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。
(付記4)
付記1記載のプログラム解析方法において、
プログラム解析情報としてプログラムの抽象構文木表現を用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合を1つの頂点に縮退し、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。
(付記5)
付記1記載のプログラム解析方法において、
プログラム解析情報としてプログラム依存グラフを用い、プログラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超える結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそれぞれ1つの頂点に縮退し、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。
(付記6)
付記1記載のプログラム解析方法において、
縮退されたプログラム依存グラフにおいて制御の流れを再構成し、縮退された制御フローグラフを生成し、縮退された制御フローグラフから文レベルの制御フローグラフを生成し、文レベルの制御フローグラフからプログラムコードを生成することを特徴とするプログラム解析方法。
(付記7)
プログラムの文および制御の依存関係を表す複数の依存要素で構成されるプログラム解析情報を用いて、可逆的に縮退可能な依存要素群を求める縮退判定部と、
前記縮退判定部により縮退可能と判定された依存要素群を縮退することで縮退されたプログラム依存グラフを生成するグラフ生成部とを備えていることを特徴とするプログラム解析装置。
(付記8)
付記7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報として制御フローグラフおよびプログラム依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素についてハンモックを探索し、探索されたハンモックを縮退し、
前記グラフ生成部は、縮退された依存要素群および縮退されたハンモックを用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。
(付記9)
付記7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラムの抽象構文木表現およびプログラム依存グラフを用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存グラフ上の頂点集合を1つの頂点に縮退し、
前記グラフ生成部は、縮退された頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。
(付記10)
付記7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラムの抽象構文木表現を用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合を1つの頂点に縮退し、
前記グラフ生成部は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。
(付記11)
付記7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラム依存グラフを用い、プログラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超える結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそれぞれ1つの頂点に縮退し、
前記グラフ生成部は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。
(付記12)
付記7記載のプログラム解析装置において、
縮退されたプログラム依存グラフにおいて制御の流れを再構成する再構成部と、
縮退された制御フローグラフを生成し、縮退された制御フローグラフから文レベルの制御フローグラフを生成する制御フローグラフ生成部と、
文レベルの制御フローグラフからプログラムコードを生成するコード生成部とを備えていることを特徴とするプログラム解析装置。
(付記13)
プログラムを解析するために、コンピュータに、
プログラムの文および制御の依存関係を表したプログラム解析情報を用いて、可逆的に縮退可能な依存要素群を求める縮退判定処理と、
前記縮退判定処理により縮退可能と判定された依存要素群を縮退することで縮退されたプログラム依存グラフを生成するグラフ生成処理とを実行させるためのプログラム解析プログラム。
(付記14)
付記13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報として制御フローグラフおよびプログラム依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素についてハンモックを探索し、探索されたハンモックを縮退し、
前記グラフ生成処理は、縮退された依存要素群および縮退されたハンモックを用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。
(付記15)
付記13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラムの抽象構文木表現およびプログラム依存グラフを用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存グラフ上の頂点集合を1つの頂点に縮退し、
前記グラフ生成処理は、縮退された頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。
(付記16)
付記13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラムの抽象構文木表現を用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合を1つの頂点に縮退し、
前記グラフ生成処理は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。
(付記17)
付記13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラム依存グラフを用い、プログラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超える結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそれぞれ1つの頂点に縮退し、
前記グラフ生成処理は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。
(付記18)
付記13記載のプログラム解析プログラムにおいて、
コンピュータに、
縮退されたプログラム依存グラフにおいて制御の流れを再構成する再構成処理と、
縮退された制御フローグラフを生成し、縮退された制御フローグラフから文レベルの制御フローグラフを生成する制御フローグラフ生成処理と、
文レベルの制御フローグラフからプログラムコードを生成するコード生成処理とを実行させるためのプログラム解析プログラム。
Claims (18)
- プログラムの文および制御の依存関係を表す複数の依存要素で構成されるプログラム解析情報を用いて、可逆的に縮退可能な依存要素群を求め、求めた依存要素群を縮退することで依存要素が縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。
- 請求項1記載のプログラム解析方法において、
プログラム解析情報として制御フローグラフおよびプログラム依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素についてハンモックを探索し、探索されたハンモックを縮退することで縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。 - 請求項1記載のプログラム解析方法において、
プログラム解析情報としてプログラムの抽象構文木表現およびプログラム依存グラフを用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存グラフ上の頂点集合を1つの頂点に縮退することで縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。 - 請求項1記載のプログラム解析方法において、
プログラム解析情報としてプログラムの抽象構文木表現を用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合を1つの頂点に縮退し、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。 - 請求項1記載のプログラム解析方法において、
プログラム解析情報としてプログラム依存グラフを用い、プログラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超える結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそれぞれ1つの頂点に縮退し、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析方法。 - 請求項1記載のプログラム解析方法において、
縮退されたプログラム依存グラフにおいて制御の流れを再構成し、縮退された制御フローグラフを生成し、縮退された制御フローグラフから文レベルの制御フローグラフを生成し、文レベルの制御フローグラフからプログラムコードを生成することを特徴とするプログラム解析方法。 - プログラムの文および制御の依存関係を表す複数の依存要素で構成されるプログラム解析情報を用いて、可逆的に縮退可能な依存関係群を求める縮退判定部と、
前記縮退判定部により縮退可能と判定された依存要素群を縮退することで縮退されたプログラム依存グラフを生成するグラフ生成部とを備えていることを特徴とするプログラム解析装置。 - 請求項7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報として制御フローグラフおよびプログラム依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素についてハンモックを探索し、探索されたハンモックを縮退し、
前記グラフ生成部は、縮退された依存要素群および縮退されたハンモックを用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。 - 請求項7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラムの抽象構文木表現およびプログラム依存グラフを用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存グラフ上の頂点集合を1つの頂点に縮退し、
前記グラフ生成部は、縮退された頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。 - 請求項7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラムの抽象構文木表現を用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合を1つの頂点に縮退し、
前記グラフ生成部は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。 - 請求項7記載のプログラム解析装置において、
前記縮退判定部は、プログラム解析情報としてプログラム依存グラフを用い、プログラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超える結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそれぞれ1つの頂点に縮退し、
前記グラフ生成部は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析装置。 - 請求項7記載のプログラム解析装置において、
縮退されたプログラム依存グラフにおいて制御の流れを再構成する再構成部と、
縮退された制御フローグラフを生成し、縮退された制御フローグラフから文レベルの制御フローグラフを生成する制御フローグラフ生成部と、
文レベルの制御フローグラフからプログラムコードを生成するコード生成部とを備えていることを特徴とするプログラム解析装置。 - プログラムを解析するために、コンピュータに、
プログラムの文および制御の依存関係を表したプログラム解析情報を用いて、可逆的に縮退可能な依存関係を求める縮退判定処理と、
前記縮退判定処理により縮退可能と判定された依存要素群を縮退することで縮退されたプログラム依存グラフを生成するグラフ生成処理とを実行させるためのプログラム解析プログラム。 - 請求項13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報として制御フローグラフおよびプログラム依存グラフを用い、縮退可能な依存要素群を縮退し、縮退できない依存要素についてハンモックを探索し、探索されたハンモックを縮退し、
前記グラフ生成処理は、縮退された依存要素群および縮退されたハンモックを用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。 - 請求項13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラムの抽象構文木表現およびプログラム依存グラフを用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合に対応するプログラム依存グラフ上の頂点集合を1つの頂点に縮退し、
前記グラフ生成処理は、縮退された頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。 - 請求項13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラムの抽象構文木表現を用い、抽象構文木表現中の依存要素である頂点集合を探索して、縮退可能な頂点集合を求め、縮退可能な頂点集合を1つの頂点に縮退し、
前記グラフ生成処理は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。 - 請求項13記載のプログラム解析プログラムにおいて、
前記縮退判定処理は、プログラム解析情報としてプログラム依存グラフを用い、プログラム依存グラフ中の依存要素である頂点間の結合度を探索し、所定の結合度を超える結合度を有する頂点集合を求め、求めた頂点集合のうち縮退可能な頂点集合をそれぞれ1つの頂点に縮退し、
前記グラフ生成処理は、縮退した頂点を含む頂点集合を用いて縮退されたプログラム依存グラフを生成することを特徴とするプログラム解析プログラム。 - 請求項13記載のプログラム解析プログラムにおいて、
コンピュータに、
縮退されたプログラム依存グラフにおいて制御の流れを再構成する再構成処理と、
縮退された制御フローグラフを生成し、縮退された制御フローグラフから文レベルの制御フローグラフを生成する制御フローグラフ生成処理と、
文レベルの制御フローグラフからプログラムコードを生成するコード生成処理とを実行させるためのプログラム解析プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/302955 WO2007096935A1 (ja) | 2006-02-20 | 2006-02-20 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2007096935A1 true JPWO2007096935A1 (ja) | 2009-07-09 |
JP5045666B2 JP5045666B2 (ja) | 2012-10-10 |
Family
ID=38436996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008501494A Expired - Fee Related JP5045666B2 (ja) | 2006-02-20 | 2006-02-20 | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8181171B2 (ja) |
JP (1) | JP5045666B2 (ja) |
WO (1) | WO2007096935A1 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060200811A1 (en) * | 2005-03-07 | 2006-09-07 | Cheng Stephen M | Method of generating optimised stack code |
US8683441B2 (en) | 2006-01-11 | 2014-03-25 | International Business Machines Corporation | Software equivalence checking |
US8826255B1 (en) * | 2007-06-18 | 2014-09-02 | The Mathworks, Inc. | Restructuring control flow graphs generated from a model |
US9110706B2 (en) | 2009-02-09 | 2015-08-18 | Microsoft Technology Licensing, Llc | General purpose distributed data parallel computing using a high level language |
CN101639806B (zh) * | 2009-09-01 | 2015-06-03 | 中兴通讯股份有限公司 | 用于自动化测试的拓扑适配方法和装置 |
US8584100B2 (en) * | 2009-12-10 | 2013-11-12 | Sap Ag | Bridging code changes and testing |
TWI448965B (zh) * | 2011-06-15 | 2014-08-11 | Tatung Co | 解析程式碼的方法 |
US8666999B2 (en) * | 2011-08-02 | 2014-03-04 | Rockwell Automation Technologies, Inc. | Search utility program for software developers |
CN103092747B (zh) * | 2011-10-27 | 2016-06-22 | 西门子公司 | 一种控制程序的验证和测试方法及系统 |
JP5910230B2 (ja) * | 2012-03-26 | 2016-04-27 | 富士通株式会社 | 設計支援プログラム、設計支援方法、および設計支援装置 |
US8806464B2 (en) | 2012-04-26 | 2014-08-12 | Hewlett-Packard Development Company, L.P. | Process flow optimized directed graph traversal |
US9658999B2 (en) * | 2013-03-01 | 2017-05-23 | Sony Corporation | Language processing method and electronic device |
US9619364B2 (en) * | 2013-03-14 | 2017-04-11 | Nvidia Corporation | Grouping and analysis of data access hazard reports |
US9043921B2 (en) * | 2013-04-12 | 2015-05-26 | Fujitsu Limited | Determining software metrics |
US9122561B2 (en) * | 2013-09-24 | 2015-09-01 | International Business Machines Corporation | Program integration that accommodates restrictions on merge-locations |
GB2521367A (en) * | 2013-12-17 | 2015-06-24 | Ibm | Adaptable and extensible runtime and system for heterogeneous computer systems |
US9886736B2 (en) | 2014-01-20 | 2018-02-06 | Nvidia Corporation | Selectively killing trapped multi-process service clients sharing the same hardware context |
CN105512046B (zh) * | 2016-02-01 | 2018-02-13 | 北京理工大学 | 基于粒子群优化算法的Android自动化测试方法 |
JP6933012B2 (ja) * | 2017-06-14 | 2021-09-08 | 富士通株式会社 | 解析装置、解析プログラムおよび解析方法 |
JP2023084609A (ja) * | 2021-12-07 | 2023-06-19 | 富士通株式会社 | 変換プログラムおよび変換方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5161216A (en) * | 1989-03-08 | 1992-11-03 | Wisconsin Alumni Research Foundation | Interprocedural slicing of computer programs using dependence graphs |
US6064819A (en) * | 1993-12-08 | 2000-05-16 | Imec | Control flow and memory management optimization |
US5802375A (en) * | 1994-11-23 | 1998-09-01 | Cray Research, Inc. | Outer loop vectorization |
US5918035A (en) * | 1995-05-15 | 1999-06-29 | Imec Vzw | Method for processor modeling in code generation and instruction set simulation |
US5894576A (en) * | 1996-11-12 | 1999-04-13 | Intel Corporation | Method and apparatus for instruction scheduling to reduce negative effects of compensation code |
US6077313A (en) * | 1997-10-22 | 2000-06-20 | Microsoft Corporation | Type partitioned dataflow analyses |
US6578197B1 (en) * | 1998-04-08 | 2003-06-10 | Silicon Graphics, Inc. | System and method for high-speed execution of graphics application programs including shading language instructions |
US6327699B1 (en) * | 1999-04-30 | 2001-12-04 | Microsoft Corporation | Whole program path profiling |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6374403B1 (en) * | 1999-08-20 | 2002-04-16 | Hewlett-Packard Company | Programmatic method for reducing cost of control in parallel processes |
IL131782A (en) * | 1999-09-07 | 2005-11-20 | Ibm | Automatic removal of array memory leaks |
US6848100B1 (en) * | 2000-03-31 | 2005-01-25 | Intel Corporation | Hierarchical software path profiling |
JP3664473B2 (ja) | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
JP3707727B2 (ja) * | 2000-10-30 | 2005-10-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
US7165245B2 (en) * | 2001-04-27 | 2007-01-16 | Intel Corporation | Pruning local graphs in an inter-procedural analysis solver |
US7650593B2 (en) * | 2004-03-25 | 2010-01-19 | Microsoft Corporation | Proxy objects for display |
US7765534B2 (en) * | 2004-04-30 | 2010-07-27 | International Business Machines Corporation | Compiler with cache utilization optimizations |
US7478378B2 (en) * | 2004-11-29 | 2009-01-13 | International Business Machines Corporation | Semantically consistent adaptation of software applications |
US7624386B2 (en) * | 2004-12-16 | 2009-11-24 | Intel Corporation | Fast tree-based generation of a dependence graph |
US7627864B2 (en) * | 2005-06-27 | 2009-12-01 | Intel Corporation | Mechanism to optimize speculative parallel threading |
-
2006
- 2006-02-20 JP JP2008501494A patent/JP5045666B2/ja not_active Expired - Fee Related
- 2006-02-20 WO PCT/JP2006/302955 patent/WO2007096935A1/ja active Application Filing
-
2008
- 2008-08-14 US US12/191,623 patent/US8181171B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8181171B2 (en) | 2012-05-15 |
JP5045666B2 (ja) | 2012-10-10 |
WO2007096935A1 (ja) | 2007-08-30 |
US20090007087A1 (en) | 2009-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5045666B2 (ja) | プログラム解析方法、プログラム解析装置およびプログラム解析プログラム | |
Lai et al. | HeteroCL: A multi-paradigm programming infrastructure for software-defined reconfigurable computing | |
Zheng et al. | Flextensor: An automatic schedule exploration and optimization framework for tensor computation on heterogeneous system | |
CN110764744B (zh) | 用于神经网络计算的中间表示生成方法和装置 | |
US8572590B2 (en) | Methods and apparatus for joint parallelism and locality optimization in source code compilation | |
US7237234B2 (en) | Method for selective solicitation of user assistance in the performance tuning process | |
US20170090891A1 (en) | Method and device for assisting with code optimisation and parallelisation | |
Wahib et al. | Automated GPU kernel transformations in large-scale production stencil applications | |
Dolbeau et al. | One OpenCL to rule them all? | |
Weber et al. | MATOG: array layout auto-tuning for CUDA | |
Rodríguez et al. | Trace-based affine reconstruction of codes | |
US8312400B2 (en) | Verification supporting system | |
Wang et al. | Funcytuner: Auto-tuning scientific applications with per-loop compilation | |
Siso et al. | Evaluating auto-vectorizing compilers through objective withdrawal of useful information | |
Singer et al. | SYCLops: A SYCL Specific LLVM to MLIR Converter | |
JP2012014526A (ja) | プログラムコードの構造変換装置、並びにコード構造変換プログラム | |
Fabeiro et al. | OCLoptimizer: An iterative optimization tool for OpenCL | |
Desai et al. | ACORNS: An easy-to-use code generator for gradients and Hessians | |
Grant et al. | Introducing the StataStan interface for fast, complex Bayesian modeling using Stan | |
Remmelg et al. | High-level hardware feature extraction for GPU performance prediction of stencils | |
CN112840316A (zh) | 用于优化现场可编程门阵列的代码的方法和装置 | |
O’Neal et al. | Hardware-assisted cross-generation prediction of GPUs under design | |
JP2019139675A (ja) | ソースコード最適化装置、プログラムおよび方法 | |
Lin et al. | A code transformation framework for scientific applications on structured grids | |
Sari et al. | A Highly Scalable Instruction Scheduler Design based on CPU Stall Elimination |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111101 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111228 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120619 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120702 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150727 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |