JPH10161882A - 述語型コード処理システム - Google Patents

述語型コード処理システム

Info

Publication number
JPH10161882A
JPH10161882A JP9312965A JP31296597A JPH10161882A JP H10161882 A JPH10161882 A JP H10161882A JP 9312965 A JP9312965 A JP 9312965A JP 31296597 A JP31296597 A JP 31296597A JP H10161882 A JPH10161882 A JP H10161882A
Authority
JP
Japan
Prior art keywords
predicate
predicates
partition
node
code
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.)
Withdrawn
Application number
JP9312965A
Other languages
English (en)
Other versions
JPH10161882A5 (ja
Inventor
Ju Zu-Chin
ズ−チン・ジュ
M Gireese David
デビッド・エム・ギリーズ
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH10161882A publication Critical patent/JPH10161882A/ja
Publication of JPH10161882A5 publication Critical patent/JPH10161882A5/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow 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)

Abstract

(57)【要約】 【課題】述語型コードにおける述語間の干渉の可能性を
判断するため述語を大域的に分析するシステムおよび方
法を提供する。 【解決手段】制御フローと明示的述語を単一のパーティ
ション・グラフにマップして両者を統一的に取り扱うこ
とによって述語の間の関係が大域的に追跡される。これ
によってプロシジャ全体にわたる述語関係の分析が可能
となる。そのため、本発明のシステムは、各述語に関す
る領域を決定する手段、決定した領域の各々を互いに素
の部分集合に細分化する手段、および、述語の大域的関
係を捕捉するため細分化された領域の各々に基づいてパ
ーティション・グラフを構築する手段を備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、高性能マイクロプ
ロセッサにおける述語コードの使用に関するもので、干
渉の可能性を判断するため述語を大域的に分析するシス
テムおよび方法に関するものである。
【0002】
【従来の技術】現代の高性能マイクロプロセッサにおけ
る広範囲の機械資源を完全に利用するためには、個々の
基本ブロックを越えた並列性を開拓することが必要であ
る。異なる基本ブロックからの命令をブール述語によっ
てガードされた直線的コードに変換することを可能にす
ることによって、述語化された実行に関するアーキテク
チャ上のサポートが命令レベルの並列性を増加させる。
しかしながら、述語化された実行は、また,最適化コン
パイラに対して大きな挑戦を提示する。
【0003】以下の記述において、V. Kathail、M. Sch
lansker、B. Rau3氏著の"HPL Playdoh Architecture S
pecification: Version 1.0, Hewlett-Packard Laborat
ories Technical Report, HPL-93-80, Feb. 1993"に記
載のHPL Playdohアーキテクチャで提供される一般的述
語化実行モデルのアーキテクチャ・サポートが前提とさ
れている。このアーキテクチャでは、命令の実行は限定
述語(qualifying predicate)によってガードされる。次
の形式の比較命令が述語を設定するために提供される。 p1,p2 = cmpp.<d1><d2> (a rel b) if qp 述語p1およびp2は、2つの宛先を持つ述語である。<d1>
および<d2>の各々は、比較命令に関するタイプおよびモ
ードを指定する2字記述子である。記述子の最初の文字
によって指定される、unconditionalすなわち無条件
(u)、conditionalすなわち条件付き(c)、parallel-orす
なわち並列OR(o)、およびparallel-andすなわち並列
AND(a)という4つの比較タイプがある。各タイプ
は、記述子の2番目の文字によって指定されるnormal m
odeすなわち通常モード(n)およびcomplement modeすな
わち補完モード(c)を持つ。記述子<d1>および<d2>は、
宛先述語p1およびp2をそれぞれ制御する。条件(a rel
b)は、relはeq(等しい)、ne(等しくない)、lt(未満)等
が実際に記入されて,2つの変数aおよびbの論理比較を
示す形式である。述語qpは、qualifying predicate(限
定述語)を表す。
【0004】無条件および条件つきのタイプに関する議
論を単純化するため、以下の記述において、それらをそ
れぞれcmpp.un.ucおよびcmpp.cn.ccという形式に一般化
する。従って、無条件タイプの比較に関しては、p1およ
びp2の値は相補的である。比較タイプがand(or)でqpが
真であれば、(on)目標述語(例えばp1)は,p1の前の値と
AND(OR)された(a rel b)の結果に等しい。
【0005】次の表1は、宛先述語がこれらの比較命令
でどのように設定されているかをまとめたものである。
この表において、TおよびFは、true(真)およびfalse
(偽)をそれぞれ意味し、Xは"該当せず"を表し、ncは結
果が変わらない(unchanged)ことを表す。また、特別述
語レジスタp0の存在が仮定される。このレジスタから読
みとられるすべては常に真であり、書き込まれるものす
べては無視される。
【0006】
【表1】qp (a rel b) un uc cn cc on oc an ac F X F F nc nc nc nc nc nc T T T F T F T nc nc F T F F T F T nc T F nc
【0007】下記表2に(1)として記載されているコー
ド部分は、グローバルな範囲における述語関係を認識す
る重要性を示している。xおよびyの両方は、異なる基本
ブロック内で定義され使用される。干渉について調べる
ため、pの下のxの使用がrの下のxの定義に向かってelse
節へ伝播される。このプロセスの間sの下のyの定義を交
差させている間、pおよびsが互いに素であることが確認
されない限り、xとyの間の干渉が推定される。コードを
調べることによって、pおよびsがthenおよびelse節にそ
れぞれ定義されているので、pおよびsの両方が同時に真
であることは決してあり得ないことがわかる。しかしな
がら、pおよびsの間の互いに素という関係を体系的に確
認する大域的分析が必要とされる。この関係は、複合ブ
ロックまたは基本ブロックに基づく分析によって補足す
ることはできない。大域述語分析を用いればpおよびrが
互いに素であることを確認することができる。従って、
rの下のxの定義は、pの下のxの使用に決して到達するこ
とができないので、この定義は、はたらいていない。
【0008】
【表2】(1) p,q,r,s = false if (..) then { p,q = cmpp.un.uc if true x = .. if p } else { r,s = cmpp.un.uc (...) if true x = .. if r y = .. if s } .. = x if p .. = y if s
【0009】従来技術のコンパイラは、述語階層グラフ
(すなわちpredicate hierarchy graph,PHG)を使用し
て、複合ブロックにおける述語のすべてについてブール
式を追跡した。この方法は、S.A. Mahike、D.C. Lin、
W.Y Chen、R.E. HankおよびR. A. Bringnann著の"Effec
tive Compiler Support for Predicated Execution Usi
ng Hyperblock," In Proc. of the 25th Annual Int'l
Symp. on Microarchitecture, pp. 45-54, Dec. 1992に
記載されている。上記文献では、複合ブロックの範囲に
わたって分析が行われるが、それは大域的には拡張され
ない。PHGのようなコンパニオン・データ構造がコー
ドと共に維持されると、プログラムが変更するときは必
ずデータ構造も更新されなければならない。
【0010】N.J. Waters, S.A. Mahike, W.-M.W. Hwu
およびB.R. Rau各氏共著の"ReverseIf-conversion," In
Proc, of the SIGPLAN'93 Conf. on Programming Lang
uageDesign and Implementation, pp. 290-299, June 1
993によって提唱された反転if変換方式がある。これ
は、データ・フロー領域からの述語を、よく知られてい
る制御フロー領域に対応づけるものである。この方式の
主な欠点は、再対応付けプロセスの間に元々存在しなか
った制御経路がいくつか作成される可能性がある点であ
る。この事象は、典型的には、コードがif変換され次に
スケジュールされ、従ってコード順序が入れ替わる時、
発生する。このコードが反転if変換される時、存在しな
い経路はが多くの分析および変換における保守的処置を
引き起こす可能性がある。
【0011】Alexandre E. Eichenberger、Edward S.Da
vidson両氏著の"Register Allocation for Predicated
Code," In Proc. of the 28th Annual Int'l Symp. on
Microarchitecture, November 1995は、述語をP-事実
(論理的に不変の表現)として表すことによって、述語が
直面するレジスタ割当て問題を解決する。このメカニズ
ムは、P-事実の2つのセットの交差部を記号パッケー
ジを使用して偽に単純化することができるならば,2つ
の生きた範囲は干渉しないと結論づけている。このアプ
ローチもまた複合ブロックの範囲に制限されていて、述
語の数に関する潜在的な指数的コンパイル時間行動を所
与とすれば、実用性を制限している。
【0012】
【発明が解決しようとする課題】従って、データ・フロ
ー分析のようなコンパイル分析の間,人工的または不要
なステップをプロセスに付加することなく、述語の意味
論を考慮することのできる述語型実行システムの必要性
が当業界に存在する。
【0013】
【課題を解決するための手段】本発明は、述語型コード
が存在する場合種々のコンパイラ分析および変換フェー
ズの精度および効果を向上させるため述語の間の関係を
分析するシステムおよび方法を提供する。本発明の述語
分析システムは、プロシージャ全体の範囲に基づいて述
語の間の関係を取得するため大域的に動作する。更に、
本発明のシステムおよび方法は、制御フローと述語を単
一の統一されたフレームワークに結合し、後続の最適化
および分析フェーズがこのフレームワークに照会を行う
ことを可能にする。
【0014】述語分析における従来技術は、一般的に、
if変換単一入口複数出口制御フロー領域である複合ブ
ロックに基づいている。本発明においては、制御フロー
・グラフ(以下Control Flow Graphの頭文字をとってC
FGと略称する場合がある)の各ノードは、直線的シー
ケンスの述語型コードを含む単一入口単一出口領域であ
る基本ブロックである。この表現形式の1つの利点は、
この形式がいまだにコンパイラ分析および最適化にとっ
て最もよく知られた表現であるということである。本発
明は、CFGが単一の開始ノードおよび単一の終了ノー
ドを持つと仮定する。本発明の大域述語分析は、プロシ
ージャ全体における制御フローおよびコード・ストリー
ムに基づく。大域述語分析は、述語が異なる基本ブロッ
クにおいて定義され使用される場合一層明確な述語関係
を作成する。
【0015】本発明は、従来技術において定義された表
記法をプロシージャ全体にに拡大する。トレースは、C
FGにおける開始ノードから終了ノードまでの非周期的
な経路について実行される命令のすべてを含む。pが真
の時トレースについての命令のすべてが実行されるとす
れば、このトレースは述語pの領域(すなわちドメインdo
main)に属する。異なる基本ブロックにおいて定義され
る述語を関連づける鍵は、これらの基本ブロックの間で
の到達可能性を分析することである。述語に関する場合
と同様に、本発明は、基本ブロックの領域を、その基本
ブロックが実行されるトレースのすべてであると定義す
る。従って、ある基本ブロックに別の基本ブロックから
到達することができるなら(またはその逆)、これらの2
つの基本ブロックは、"互いに素(すなわちdisjoint)"で
はない。この到達可能性情報が大域パーティション・グ
ラフに表され、述語の存在に関係なく、基本ブロックの
間の関係を追跡することができる。
【0016】制御フローおよび述語を一様に取り扱うた
め、本発明は、各基本ブロックに1つの述語を割り当て
る。本発明は、区別の必要があれば、基本ブロックに割
り当てられる述語を制御述語(control predicate)と呼
び、命令ストリームに明示的に現れる述語を実体述語(m
aterialized predicate)と呼ぶ。基本ブロックの制御述
語は、基本ブロックが実行されるか否かを制御する条件
のすべてを組み合わせる述語と見なされる。本発明は、
制御述語および実体述語を含む1つの完全な述語パーテ
ィション・グラフの構築に基づいた大域述語分析を実行
する。この単一大域パーティション・グラフによって、
プログラム分岐を通る条件付き実行ならびに述語型実行
の意味論を追跡することが可能となる。注:制御述語が
また実体述語に実体化されれば、それらが同じ領域を共
有しパーティション・グラフの中の同じノードにマップ
されることを本発明のif変換は保証する。このことに
より、述語分析の精度が更に向上する。
【0017】後述のグラフ構築メカニズムは、持続的デ
ータ構造の更新を必要とすることなく、最適化ルーチン
全体を通して呼び出されることができる。これは、if
変換の前でも後でも実行できる。この柔軟性は、本発明
が制御フローおよび実体述語を統一的方法で取り扱うと
いう事実による。if変換が実体述語作成の主要源では
あるが、高水準疑似コード拡張のようなフェーズも述語
型コードを生成することができる。実体述語の間の大域
的関係を知ることによって、if変換の前後のデータ・
フロー分析が一層正確になる得る。
【0018】本発明の1つの技術的利点は、述語の間の
関係を分析する大域的技術の開発であり、それらの関係
を後続のコンパイル分析または変換フェーズが照会する
ことができるということである。制御フローと述語の間
の関係を統合するため述語分析を使用することは本発明
の別の利点である。
【0019】本発明のシステムおよび方法は、多くの既
知のコンピュータ上で動作することができる。例えば
は、ヒューレット・パッカード社から市販のPA−RI
SC8200である。
【0020】発明の課題を解決する手段として、本発明
は、複数の述語を持つ述語型コードを処理するシステム
を提供する。該システムは、各述語に関する領域を決定
する手段、決定した領域の各々を互いに素の部分集合に
細分化する手段、および、述語の大域的関係を捕捉する
ため細分化された領域の各々に基づいてパーティション
・グラフを構築する手段を備える。
【0021】
【発明の実施の形態】図1のAおよびBは、それぞれ、
オリジナルの制御フローおよびIF変換コードの例を示
す。IF変換は、すべての6つの基本ブロックを述語型
コードを持つ1つの基本ブロックに変換する。S1および
S2を含む基本ブロックでの切り替えポイントの各々は、
無条件タイプの比較命令に変換される。S4を含む基本ブ
ロックでの合流ポントは、無条件タイプの1つの比較命
令とORタイプの1つの比較命令の組合せに変換され
る。
【0022】本明細書の記述において、述語の間の関係
を追跡するため述語パーティション・グラフの概念が使
用される。説明を簡略にするため、述語は、各述語がた
だ一度だけ静的に定義される静的単一割り当て形式を持
つと仮定する。このような形式をStatic Single Assign
mentの頭文字をとって以下SSAと呼称する。
【0023】しかし、これは本発明の実施形態上の要件
ではない。図1のBに示されるように、p4は2回定義さ
れている。SSA形式でのp4への参照を記述するため、
関連定義および使用が以下の表3の(3)に示されるよう
な中間形式に変換される。
【0024】
【表3】 (3) ... p4_1 = cmpp.uc (...) if true ... p4_2 = p4_1 | px, where px = cmpp,un (s2 cond) if p2 ... S4 if p4_2 ...
【0025】述語の間の関係を記述するため実行集合の
概念を使用する。まず直線的コードで以下の表記法を定
義し、後に制御フローを取り入れるようにそれらを拡張
する。実行トレースは、直線的コードで最初から最後ま
で実行される命令のすべてを含む。pが真の時トレース
についての命令のすべてが実行されるならば、このトレ
ースは述語pの領域(または基本実行集合)に属してい
る。pの領域は、そのようなトレースのすべてを含む。
注:領域の概念は例示目的のためだけのもので、それら
の経路を列挙する必要はない。曖昧でなければ、pの領
域を意味するため単にpを使用することもできる。
【0026】図2で示されるように、述語のパーティシ
ョンは、複数の"互いに素"の部分集合への述語領域の分
割であり、従って、それらの部分集合の和集合は領域に
等しい。例えば、命令p1,p2=cmpp.un,uc ( .. . )if p3
を図で表せば、図2のようになる。p3が真の時、p1およ
びp2の値は常に相補的である。言い換えると、p1および
p2の両方が真である場合非周期的実行経路は存在しな
い。p1またはp2が真であれば、p3が真でなければならな
いことを導出することができる。
【0027】述語パーティション・グラフG=(V,E)にお
いて、Vの中の各ノードpは述語pを表し、各エッジ(p,q)
は、qがパーティションの部分集合であるようなパーテ
ィションがpに存在することを表す。Gにおけるエッジが
指示され、同じパーティションから作成されたエッジは
同じラベルを与えられる。異なるパーティションによっ
て2つの所与のノードの間に複数のエッジが存在するの
で、Gは指示された非周期的複数グラフである。全体集
合p0がユニークなルートであれば、パーティション・グ
ラフは完全である。これは、述語分析で使用されるアル
ゴリズムによって必要とされる場合、あらゆるノードを
ルートから到達可能とさせる。パーティション・グラフ
は述語関係に近似するので、同じコード・ストリームに
関して、いろいろな精度を持つ異なるパーティション・
グラフを作成することができる。
【0028】図1のBで示されたif変換されたコード
のためのパーティション・グラフが図3のBに示され
る。図3のBは領域がどのように分割されるかを理解す
るのに役立つ。パーティション・グラフのルートp0は、
l1でp2およびp3に細分化される。l4で、p2は、p5、およ
びこのパーティションを完成させるために作成される暗
黙的述語pxに細分化される。命令l1およびl2は両方とも
に無条件の比較タイプを持ち、同じ条件について調べる
ので、これらの2つの命令は、本質的に値合同である。
従って、p3およびp4_1は常に同じ値を持ち、同じ述語ノ
ードにマップされることができる。l5において、pxおよ
び4_1和集合がp4_2に関する領域を形成する。p4_2の補
集合は、p5であり、親述語としてp0を、子述語としてp4
_2およびp5を持つ別のパーティションを生成する。この
ステップは、p4_2をルートから到達可能にするため必要
である。上記は、図3のAに示されている。
【0029】パーティション・グラフが構築されると、
そのグラフに基づく大域的述語照会システムを構築し
て、述語型関係に関する(以下のような)多数の異なる照
会をサポートすることができる。
【0030】isDisjoint(p.q.): 述語pの領域が述語qの
領域と重なるかどうかを照会する。2つの述語が同じパ
ーティションの異なるエッジを経由して2つの共通の先
祖に到達することができれば、それら2つの述語は"互
いに素"である。例えば、図3のAにおいて、p3およびp
5は互いに素であるが、p2およびp4_2は互いに素ではな
い。注:この点は、pxがp2およびp4_2の部分集合である
ように示されている図3のBの領域関係から明白であ
る。Qが述語の集合である場合、この照会をIsDisjoint
(p.Q.)に展開することは容易であり、回答は、pがQにお
けるあらゆる述語と互いに素であれば、真である。
【0031】IsSuperset(p,q): pの領域がqの領域の上
位集合であるかどうかを照会する。pからqへのエッジが
存在すれば、述語pは述語qの上位集合である。例えば、
図3のAにおいて、p2はp5の上位集合である。
【0032】IsComplement(p,q): pおよびqの領域が互
いに補集合であるかどうか照会する。述語pおよびqは、
それらの領域の和集合が既存の述語の和集合と等しけれ
ば、補集合であり、それらの領域の共通部分は空集合で
ある。
【0033】LeastUpperBoundSum(p,Q): 述語集合Qに述
語pを加える計算結果の集合の領域は、pの領域およびQ
の領域の和集合の最小上位集合である。あるパーティシ
ョンの中の子述語のすべてがpおよびQの和集合に現れれ
ば、それら子述語はそれらの親述語と置き換えられるこ
とによって、上記計算結果の集合は簡略化される。
【0034】LeastUpperBoundDiff(p,Q): 述語集合Qか
ら述語pを減ずる。計算結果の集合の領域は、pの領域に
よって減じられたQの領域の最小上位集合である。例え
ば、図3のAにおいて、pxはLeastUpperBoundDiff(p5,p
2)と等しい。
【0035】制御フローを分析するため、制御述語が基
本ブロックに割り当てられ、制御フロー切り替えおよび
合流ポイントにおいてパーティションが形成される。特
別の関心が下記の制御フロー構造に払われるとはいえ、
本発明の述語分析は、簡略不可能なグラフ、切り替え文
その他を含むいかなる任意の制御フロー・グラフをも取
り扱う。
【0036】臨界エッジ−臨界エッジは、そのソースが
複数の後続ノードを持ち、その行き先が複数の先行ノー
ドを持つエッジとして定義される。例えば、図1のAに
おいて、S2からS4へのエッジは臨界エッジである。切り
替え(合流)ポイントにおいて、臨界エッジは、パーティ
ションにおける子述語として行き先(ソース)ノードの制
御述語の使用を防ぐ。このことは、この臨界エッジ上
で、ソース・ノードが行き先ノードを支配しないためあ
るいは行き先ノードがソース・ノードを事後支配しない
ため、発生する。この問題を解決するため、本発明は、
臨界エッジ上にノードを概念的に作成し、暗黙的述語を
ノードに割り当てる。注:このエッジ分割は概念レベル
で行われるもので、CFGを実際に変えない。この仮想
エッジ分割によって、すべての先行ノードは切り替えポ
イントにおいてそれらの後続ノードを支配し、すべての
後続ノードは合流ポイントにおいてその先行ノードを事
後支配する。これによってパーティションの作成が単純
化される。注:ノードpがノードqを支配または事後支配
すれば、pはパーティション・グラフにおいて常にqの先
祖であり得る。
【0037】バック・エッジ−バック・エッジはCFG
におけるサイクルを完了するエッジである。現在の技術
では、述語分析においてバック・エッジを考慮したとし
ても、述語に関して導出できる有用な情報は少ない。例
えば、ループにおいて囲われるif-then-else構造は、th
en-およびelse-節の両方が同じ繰り返しの中で実行され
ることはないが、別の繰り返しの中では実行される場合
がある。従って、この2つの節に割り当てられる述語
は、特定の繰り返しの範囲内では互いに素であるが、繰
り返し全体にわたって互いに素であるとは限らない。こ
の述語分析の結果は、バック・エッジを無視して割り込
まれる。これは、分析精度に対する影響をほとんど持た
ない。これは、if変換がすでに非周期的な地域に制限
されているという事実に部分的による。パーティション
・グラフ構築の間、バック・エッジも、また、仮想ノー
ドをそれらに割り当てることによって、分割される。本
発明の分析は、簡略化不可能なグラフにも適用できる。
しかしながら、バック・エッジは簡略化不可能なグラフ
に対してむしろ恣意的に選択されるので、結果の精度は
あまり高くないかもしれない。
【0038】図4は、制御述語に基づいてパーティショ
ン・グラフを構築するアルゴリズムを示す。入力はCF
Gである。臨界エッジおよびバック・エッジに関する分
割が先ず実行される(ステップ401)。制御同等ノード
の検出(ステップ402)は正確性にとって不可欠のもの
ではないが、制御同等領域を持つノードが同じ述語にマ
ップされる(ステップ403)と述語分析の精度は向上す
る。すべてのプログラム切り替えおよび合流ポイントに
おいてパーティションを作成して(ステップ404およ
び405)、述語関係を追跡する。最後に(ステップ40
6)、非開始ノードが親ノードを持っていなければ、パ
ーティションを作成し、そのノードをその最近接の支配
ノードに結合して、パーティション・グラフを完成させ
る。
【0039】図1のAのCFGに基づいて図3のAのパ
ーティション・グラフを構築する方法を以下記述する。
if変換コードに基づいてパーティション・グラフを構
築する本発明の記述と同様に、(図1のAの)ノードS1
は、CFGにおける開始ノードであり、その制御述語と
してp0を与えられる。ノードS6は、S1に対する制御同等
ノードであってp0を同様に割り当てられる。残りのノー
ドに割り当てられる制御述語(p2-p5)は図1のAに示さ
れている。S1における切り替えポイントのため(図3の
Aに符号で示されているように)パーティションaが作
成される。S2からS4へのエッジは臨界エッジであり、px
がこのエッジに割り当てられ、エッジ分割が実行され
る。パーティションbは、S2における切り替えポイント
であるので、作成される。パーティションcおよびdは、
S4およびS6における合流ポイントであるので、作成され
る。
【0040】実体述語の間のローカルな関係を捕捉する
パーティション・グラフを構築する詳細を以下記述す
る。実体述語の間の関係は、比較(compare)命令のよう
な述語が定義されるポイントの各々において作成され
る。
【0041】図5は、実体述語に関するパーティション
・グラフを構築するアルゴリズムを示す。実体述語を定
義する最も普通のケースは、無条件タイプを持つ比較命
令である(ステップ501)。図5において、親述語とし
てppを持ち、互いに素な子述語としてp1およびp2を持つ
パーティションが作成される。qpがp0であれば、基本ブ
ロックの制御述語であるbpによって現在命令はガードさ
れ、p1およびp2の領域の和集合はbpの領域であることが
観察される。従って、親述語として制御述語bpを持つパ
ーティションが構築される。この点は、制御述語と実体
述語の関係を確立して大域的視野からの述語分析を可能
にする上での鍵である。qpがp0でなければ、この命令が
実行されるかどうかに影響を与える制御条件のすべて
が、定義qpに統合されている。この点は本発明の実施に
おいて確認されている。従って、qpがp0でなければ、p1
およびp2の和集合はqpであり、p1およびp2をbpへ結合さ
せるパーティションを構築する必要はない。比較命令を
ガードする実際の述語(pp)の領域は、常に、bpの領域の
部分集合である。
【0042】その他の3つのタイプの比較命令は、述語
の前の値が新しい述語に影響を及ぼすという形態での述
語更新を伴う。これらタイプの比較命令が頻繁に使用さ
れず、またパーティション・グラフによるモデル化が簡
単ではないので、本発明はそれらタイプの取り扱いに消
極的である。条件つきのタイプをもつ比較命令に関して
は、qpがp0であれば、この命令は実質的に無条件タイプ
であって、無条件タイプと同じ方法で取り扱う。qpがp0
でなければ、p1およびp2に単にヌルの述語ノードをマッ
プして、述語分析に対する照会の間それらは消極的方法
で取り扱われる。注:onおよびoc(またはanおよびan)目
標述語の両方が比較命令に現れるならば、ただ1つの目
標が存在するかのようにそれらを分離して処理する。an
andタイプの比較命令に関しては、p1の領域は、常に、
p1_oldの領域の部分集合である。an orタイプの比較命
令に関しては、p1の領域は、常に、p1_oldの領域の上位
集合であって、p1を制御述語bpに結合するパーティショ
ンが作成され、パーティション・グラフが完成される。
【0043】図4および図5に示される方法およびシス
テムに基づいて、図6のパーティション・グラフが構築
され、例(1)における述語に関する大域的関係が捕捉さ
れる。if節を含む基本ブロックは、その制御述語とし
てp0を割り当てられ、パーティション・グラフのルート
となる。then節およびelse節はそれらの制御述語として
それぞれp_then節およびp_else節を割り当てられる。述
語の偽への初期化は、パーティション・グラフのにおい
て述語ノードを何も作成しない。if-then-else構造のた
め制御フローにおける切り替えポイントにおいてパーテ
ィションaが作成される。then節において実体述語pお
よびqを割り当てている比較命令のためパーティション
bが作成される。else節において実体述語rおよびsを割
り当てている比較命令のためパーティションcが作成さ
れる。このパーティション・グラフは、p、q、rおよびs
が互いに素という大域的述語関係を追跡する。この関係
は、xおよびyが相互に干渉しないことを保証するために
必要である。
【0044】本発明のif変換によって生成される比較
命令の2つの共通のパターンがある。プログラム切り替
えポイントに関して、cmpp.un.uc命令が生成され、図5
のシステムおよび方法(ステップ502)がこれを正確に
モデル化する。(しばしば臨界エッジによる)構造化され
ないプログラム合流ポイントに関して、mpp.un.ucおよ
びcmpp.on(またはcmpp.oc)命令の組み合わせが割り当て
られる。図5の中のアルゴリズムは常に正しいが、an o
rタイプの比較命令については消極的かもしれない。そ
の理由は、この初期の実施において、述語を制御する比
較条件が追跡されなかったしまた述語に番号付けの値が
与えられなかったためである。例えば、図1のBのif
変換コードについて、番号付けの値がなければ、p3およ
びp4_1が同じ述語ノードにマップされることができるこ
とを認識できないし、p4_2がp4_1とpxの和集合であるこ
とを把握することはできない。しかしながら、このよう
なタイプの非構造化合流は、if変換比較命令のわずか
な部分(本発明実施形態の経験では10%以下)にすぎな
い。将来、an orタイプの比較命令の正確なモデル化が
行われるであろう。
【0045】本発明およびその特長の詳細を以上記述し
たが、本発明の理念および範囲を逸脱することなく種々
の変更修正を行うことができる点は認められるべきであ
ろう。
【0046】本発明には、例として次のような実施様態
が含まれる。 (1)複数の述語を持つ述語型コードを処理するシステ
ムであって、各述語に関する領域を決定する手段と、決
定した領域の各々を互いに素の部分集合に細分化する手
段と、述語の大域的関係を捕捉するため細分化された領
域の各々に基づいてパーティション・グラフを構築する
手段と、を備える述語型コード処理システム。 (2)各述語を細分化する上記手段が、制御述語を細分
化する手段を含む、上記(1)に記載の述語型コード処
理システム。 (3)制御述語を細分化する上記手段が、各臨界エッジ
および各バック・エッジに関する仮想ノードを作成する
ことによって臨界エッジおよびバック・エッジを分割す
る手段と、同等制御ノードを確認する手段と、同等制御
ノードの各集合に同一述語を割り当てる手段と、合流ポ
イントおよび切り替えポイントを持つノードに割り当て
られた述語にパーティションを形成する手段と、を含む
上記(2)に記載の述語型コード処理システム。 (4)制御述語を分割する上記手段が、先行ノードを持
たない非開始ノードにとって最近節の支配ノードの中に
パーティションを形成する手段を含む、上記(3)に記
載の述語型コード処理システム。 (5)制御述語を細分化する上記手段が、開始ノードに
対してその制御述語として述語p0を割り当てる手段を含
む、上記(3)に記載の述語型コード処理システム。
【0047】(6)各述語を細分化する上記手段が、実
体述語を細分化する手段を含む、上記(1)に記載の述
語型コード処理システム。 (7)実体述語を細分化する上記手段が、比較命令を持
つノードに割り当てられた述語にパーティションを形成
する手段を含む、上記(6)に記載の述語型コード処理
システム。 (8)実体述語を細分化する上記手段が、述語を定義す
る定義命令を持つノードに割り当てられた述語にパーテ
ィションを形成する手段を含む、上記(6)に記載の述
語型コード処理システム。 (9)上記述語型コードが複数の基本ブロックに分割さ
れていて、該システムが、2つの基本ブロックが互いに
素であるか否かを判断する手段を更に備える、上記
(1)に記載の述語型コード処理システム。 (10)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、1つの基本ブロックが別の
基本ブロックの上位集合であるか否かを判断する手段を
更に備える、上記(1)に記載の述語型コード処理シス
テム。 (11)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、2つの基本ブロックが互い
に補集合であるか否かを判断する手段を更に備える、上
記(1)に記載の述語型コード処理システム。
【0048】(12)制御フロー・グラフ・コードに関
してif変換を実行してグラフ・コードにおける各命令
に関する述語を形成する手段を更に備える、上記(1)
に記載の述語型コード処理システム。 (13)if変換を実行する上記手段が、各領域を細分
化する上記手段の前に動作する、上記(12)に記載の
述語型コード処理システム。 (14)if変換を実行する上記手段が、パーティショ
ン・グラフを構築する上記手段の後に動作する、上記
(12)に記載の述語型コード処理システム。 (15)上記領域が、述語型コードの基本ブロックを完
全に実行するために必要なすべてのトレースを含み、従
って、ある1つのトレースは、Pが真の時該トレースの
すべての命令が実行されるように、特定の述語pによっ
てガードされる命令集合である、上記(1)に記載の述
語型コード処理システム。 (16)上記述語型コードが複数の基本ブロックに分割
されていて、該システムが、基本ブロックに関して制御
述語を作成する手段を更に備える、上記(1)に記載の
述語型コード処理システム。 (17)述語コードの処理が、持続的データ構造の徐々
に増加する更新によって制約されずに、種々のフェーズ
のコンパイラ最適化ルーチンによって呼び出されること
ができる、上記(1)に記載の述語型コード処理システ
ム。
【0049】(18)複数の基本ブロックに分割された
コードを処理するシステムであって、各ブロックに関し
て領域を決定する手段と、決定した領域の各々を互いに
素な部分集合に細分化する手段と、述語の大域的関係を
捕捉するため細分化された領域の各々に基づいてパーテ
ィション・グラフを構築する手段と、を備える、コード
処理システム。 (19)2つの基本ブロックが互いに素であるか否かを
判断する手段を更に備える、上記(18)に記載のコー
ド処理システム。 (20)1つの基本ブロックが別の基本ブロックの上位
集合であるか否かを判断する手段を更に備える、上記
(18)に記載のコード処理システム。 (21)2つの基本ブロックが互いに補集合であるか否
かを判断する手段を更に備える、上記(18)に記載の
コード処理システム。
【0050】(22)複数の述語を持つ述語型コードを
処理する方法であって、各述語に関する領域を決定する
ステップと、決定した領域の各々を互いに素の部分集合
に細分化するステップと、述語の大域的関係を捕捉する
ため細分化された領域の各々に基づいてパーティション
・グラフを構築するステップと、を含む述語型コード処
理方法。 (23)各述語を細分化する上記ステップが、制御述語
を細分化するステップを含む、上記(22)に記載の述
語型コード処理方法。 (24)制御述語を細分化する上記ステップが、各臨界
エッジおよび各バック・エッジに関する仮想ノードを作
成することによって臨界エッジおよびバック・エッジを
分割するステップと、同等制御ノードを確認するステッ
プと、同等制御ノードの各集合に同一述語を割り当てる
ステップと、合流ポイントおよび切り替えポイントを持
つノードに割り当てられた述語にパーティションを形成
するステップと、を含む上記(23)に記載の述語型コ
ード処理方法。 (25)制御述語を分割する上記ステップが、先行ノー
ドを持たない非開始ノードにとって最近節の支配ノード
の中にパーティションを形成するステップを含む、上記
(24)に記載の述語型コード処理方法。 (26)制御述語を細分化する上記ステップが、開始ノ
ードに対してその制御述語として述語p0を割り当てるス
テップを含む、上記(24)に記載の述語型コード処理
方法。 (27)各述語を細分化する上記ステップが、実体述語
を細分化するステップを含む、上記(22)に記載の述
語型コード処理方法。 (28)実体述語を細分化する上記ステップが、比較命
令を持つノードに割り当てられた述語にパーティション
を形成するステップを含む、上記(27)に記載の述語
型コード処理方法。 (29)実体述語を細分化する上記ステップが、述語を
定義する定義命令を持つノードに割り当てられた述語に
パーティションを形成するステップを含む、上記(2
7)に記載の述語型コード処理方法。
【0051】(30)上記述語型コードが複数の基本ブ
ロックに分割されていて、該方法が、2つの基本ブロッ
クが互いに素であるか否かを判断するステップを更に備
える、上記(22)に記載の述語型コード処理方法。 (31)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、1つの基本ブロックが別の基本
ブロックの上位集合であるか否かを判断するステップを
更に備える、上記(22)に記載の述語型コード処理方
法。 (32)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、2つの基本ブロックが互いに補
集合であるか否かを判断するステップを更に備える、上
記(22)に記載の述語型コード処理方法。 (33)制御フロー・グラフ・コードに関してif変換
を実行してグラフ・コードにおける各命令に関する述語
を形成するステップを更に備える、上記(22)に記載
の述語型コード処理方法。 (34)if変換を実行する上記ステップが、各領域を
細分化する上記ステップの前に動作する、上記(33)
に記載の述語型コード処理方法。 (35)if変換を実行する上記ステップが、パーティ
ション・グラフを構築する上記ステップの後に動作す
る、上記(33)に記載の述語型コード処理方法。 (36)上記述語型コードが複数の基本ブロックに分割
されていて、該方法が、基本ブロックに関して制御述語
を作成するステップを更に備える、上記(22)に記載
の述語型コード処理方法。
【0052】(37)複数の述語を持ち、述語関係を大
域的に分析するため述語型コードを処理するシステムで
あって、各述語に関する領域を決定する手段と、決定し
た領域の各々を互いに素の部分集合に細分化する手段
と、述語の大域的関係を捕捉するため細分化された領域
の各々に基づいてパーティション・グラフを構築する手
段と、を備える述語型コード処理システム。 (38)各述語を細分化する上記手段が、制御述語を細
分化する手段と、実体述語を細分化する手段と、を含
む、上記(37)に記載の述語型コード処理システム。 (39)制御述語を細分化する上記手段が、各臨界エッ
ジおよび各バック・エッジに関する仮想ノードを作成す
ることによって臨界エッジおよびバック・エッジを分割
する手段と、同等制御ノードを確認する手段と、同等制
御ノードの各集合に同一述語を割り当てる手段と、合流
ポイントおよび切り替えポイントを持つノードに割り当
てられた述語にパーティションを形成する手段と、先行
ノードを持たない非開始ノードにとって最近節の支配ノ
ードの中にパーティションを形成する手段と、開始ノー
ドに対してその制御述語として述語p0を割り当てる手段
と、を含む、上記(38)に記載の述語型コード処理シ
ステム。 (40)実体述語を細分化する上記手段が、比較命令を
持つノードに割り当てられた述語にパーティションを形
成する手段を含む、上記(38)に記載の述語型コード
処理システム。
【0053】
【発明の効果】本発明によって、述語の間の関係を大域
的に分析することが可能となり、それら関係を後続のコ
ンパイル分析または変換フェーズにおいてそれら述語関
係を照会すること可能となり、述語型コード開発の効率
が向上する。
【図面の簡単な説明】
【図1】Aが制御フロー・グラフの1例を示し、Bがi
f変換コードを示すブロック図である。
【図2】述語領域の間の集合関係を示すブロック図であ
る。
【図3】Aが図1のAの制御フローのパーティション・
グラフを示し、Bがその述語の領域を示すブロック図で
ある。
【図4】制御述語に関するパーティション・グラフ構築
の処理の流れ図である。
【図5】実体述語に関するパーティション・グラフ構築
の処理の流れ図である。
【図6】パーティション・グラフの1例を示すブロック
図である。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】複数の述語を持つ述語型コードを処理する
    システムであって、 各述語に関する領域を決定する手段と、 決定した領域の各々を互いに素の部分集合に細分化する
    手段と、 述語の大域的関係を捕捉するため細分化された領域の各
    々に基づいてパーティション・グラフを構築する手段
    と、 を備える述語型コード処理システム。
JP9312965A 1996-11-27 1997-11-14 述語型コード処理システム Withdrawn JPH10161882A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US756,600 1985-07-19
US08/756,600 US5937195A (en) 1996-11-27 1996-11-27 Global control flow treatment of predicated code

Publications (2)

Publication Number Publication Date
JPH10161882A true JPH10161882A (ja) 1998-06-19
JPH10161882A5 JPH10161882A5 (ja) 2005-07-07

Family

ID=25044210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9312965A Withdrawn JPH10161882A (ja) 1996-11-27 1997-11-14 述語型コード処理システム

Country Status (2)

Country Link
US (1) US5937195A (ja)
JP (1) JPH10161882A (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807583B2 (en) * 1997-09-24 2004-10-19 Carleton University Method of determining causal connections between events recorded during process execution
US6427234B1 (en) * 1998-06-11 2002-07-30 University Of Washington System and method for performing selective dynamic compilation using run-time information
US6324496B1 (en) * 1998-06-18 2001-11-27 Lucent Technologies Inc. Model checking of hierarchical state machines
US6182284B1 (en) * 1998-09-30 2001-01-30 Hewlett-Packard Company Method and system for eliminating phi instruction resource interferences and redundant copy instructions from static-single-assignment-form computer code
US6564372B1 (en) * 1999-02-17 2003-05-13 Elbrus International Limited Critical path optimization-unzipping
JP3838825B2 (ja) * 1999-09-27 2006-10-25 富士通株式会社 システム解析装置及び方法、並びに解析プログラムを格納した記憶媒体
US6505345B1 (en) * 2000-01-18 2003-01-07 Intel Corporation Optimization of initialization of parallel compare predicates in a computer system
US6637026B1 (en) * 2000-03-01 2003-10-21 Intel Corporation Instruction reducing predicate copy
US6631465B1 (en) * 2000-06-30 2003-10-07 Intel Corporation Method and apparatus for instruction re-alignment using a branch on a falsehood of a qualifying predicate
US20030023959A1 (en) * 2001-02-07 2003-01-30 Park Joseph C.H. General and efficient method for transforming predicated execution to static speculation
US20020144101A1 (en) * 2001-03-30 2002-10-03 Hong Wang Caching DAG traces
US6834383B2 (en) * 2001-11-26 2004-12-21 Microsoft Corporation Method for binary-level branch reversal on computer architectures supporting predicated execution
US7143403B2 (en) * 2002-06-18 2006-11-28 Hewlett-Packard Development Company, L.P. System and method for merging control flow paths
US7065759B2 (en) * 2002-06-18 2006-06-20 Hewlett-Packard Development Company, L.P. System and method for assigning basic blocks to computer control flow paths
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
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7707566B2 (en) 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
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
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
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US7584455B2 (en) * 2003-10-23 2009-09-01 Microsoft Corporation Predicate-based test coverage and generation
US7536379B2 (en) * 2004-12-15 2009-05-19 International Business Machines Corporation Performing a multiple table join operating based on generated predicates from materialized results
US7774769B2 (en) * 2005-09-22 2010-08-10 Intel Corporation Transmitting trace-specific information in a transformed application
US20090037887A1 (en) * 2007-07-30 2009-02-05 Chavan Shasank K Compiler-inserted predicated tracing
US8225295B2 (en) * 2007-09-21 2012-07-17 Jens Palsberg Register allocation by puzzle solving
US8484611B2 (en) * 2007-10-15 2013-07-09 International Business Machines Corporation Method and system for simplified assembly of information processing applications
US8312426B2 (en) * 2008-01-07 2012-11-13 International Business Machines Corporation Method and system for simplified service composition in web environment
US8239828B2 (en) * 2008-01-08 2012-08-07 International Business Machines Corporation Method of recovering from software failures using replanning
US8245122B2 (en) * 2008-01-08 2012-08-14 International Business Machines Corporation Method and system for modeling user requests, applications and components used in dynamic application assembly
US8640149B2 (en) * 2008-03-26 2014-01-28 International Business Machines Corporation Method and apparatus for dynamic web service composition and invocation
US8949140B2 (en) * 2008-04-21 2015-02-03 International Business Machines Corporation Method and system for dynamic software reconfiguration triggered by component- or system- initiated events
US8898624B2 (en) * 2008-05-05 2014-11-25 International Business Machines Corporation Method and apparatus for simplified assembly of parametric information processing applications
US8327339B2 (en) * 2008-06-30 2012-12-04 Oracle America, Inc. Method and system for fast static taint analysis
US8296748B2 (en) * 2008-07-24 2012-10-23 Intel Corporation Method and system for intermediate representation of source code
US9305238B2 (en) 2008-08-29 2016-04-05 Oracle International Corporation Framework for supporting regular expression-based pattern matching in data streams
US8935293B2 (en) 2009-03-02 2015-01-13 Oracle International Corporation Framework for dynamically generating tuple and page classes
US8959106B2 (en) 2009-12-28 2015-02-17 Oracle International Corporation Class loading using java data cartridges
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US9305057B2 (en) 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
US8713049B2 (en) 2010-09-17 2014-04-29 Oracle International Corporation Support for a parameterized query/view in complex event processing
US9189280B2 (en) 2010-11-18 2015-11-17 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9329975B2 (en) 2011-07-07 2016-05-03 Oracle International Corporation Continuous query language (CQL) debugger in complex event processing (CEP)
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9805095B2 (en) 2012-09-28 2017-10-31 Oracle International Corporation State initialization for continuous queries over archived views
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US9098587B2 (en) 2013-01-15 2015-08-04 Oracle International Corporation Variable duration non-event pattern matching
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9047249B2 (en) 2013-02-19 2015-06-02 Oracle International Corporation Handling faults in a continuous event processing (CEP) system
US9390135B2 (en) 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US9286032B2 (en) 2013-03-15 2016-03-15 International Business Machines Corporation Automated software composition
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US9569187B2 (en) 2013-10-08 2017-02-14 International Business Machines Corporation Irreducible modules
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
CN114003868B (zh) * 2021-11-04 2026-01-23 中国科学院计算技术研究所 一种处理软件代码的方法和电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4782444A (en) * 1985-12-17 1988-11-01 International Business Machine Corporation Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering
US5161216A (en) * 1989-03-08 1992-11-03 Wisconsin Alumni Research Foundation Interprocedural slicing of computer programs using dependence graphs
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
US5448737A (en) * 1992-03-17 1995-09-05 International Business Machines Corporation System and method for optimizing computer code using a compact data flow representation
CA2102089C (en) * 1993-10-29 1999-05-25 David M. Gillies Recompilation of computer programs for enhanced optimization
US5659754A (en) * 1995-03-31 1997-08-19 Sun Microsystems, Inc. Method and apparatus for an improved optimizing compiler

Also Published As

Publication number Publication date
US5937195A (en) 1999-08-10

Similar Documents

Publication Publication Date Title
JPH10161882A (ja) 述語型コード処理システム
Deutsch Interprocedural may-alias analysis for pointers: Beyond k-limiting
Crew ASTLOG: A Language for Examining Abstract Syntax Trees.
Kirner et al. Transformation of path information for WCET analysis during compilation
Schneider et al. A verified compiler for synchronous programs with local declarations
Alt et al. Cosy compiler phase embedding with the cosy compiler model
Cedersjö et al. Tÿcho: a framework for compiling stream programs
Darabi et al. A verification technique for deterministic parallel programs
Kojarski et al. Modeling aspect mechanisms: A top-down approach
Zavatteri et al. Repair of unsound data-aware process models
Palsberg et al. A new approach to compiling adaptive programs
Amla et al. Abstract patterns of compositional reasoning
Ulmann Multi-level rewriting for stream processing to RTL compilation
HAOKUN Survey About Value Numbering Optimization
Hoffmann et al. Towards rule-based visual programming of generic visual systems
Andres et al. EDS—Collaborating for a high performance parallel relational database
Fronc et al. Towards a certified Petri net model-checker
Dancanet et al. Programming language expressiveness and circuit complexity
Liua et al. A survey of siphons in Petri nets
Baxter Parallel support for source code analysis and modification
Fenwick Jr et al. Global compiler analysis for optimizing tuplespace communication on distributed systems
Omer et al. Monitoring Distributed Systems Based on Partial Order Executions with Global States
Castro et al. Structure, semantics and speedup: reasoning about structured parallel programs using dependent types
Wöhrer et al. Logical optimization of dataflows for data mining and integration processes
Reps G. Ramalingam Microsoft Research India; Bangalore, India

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041108

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20060320