Skip to content
Qiping Li edited this page Sep 29, 2015 · 1 revision

AnalysisNewValue

功能:更新Value对应的节点的状态

AnalysisNewNode

功能: 更新节点的状态,同时更新operand的状态(沿着Operand上去)

调用情况:

  1. 在Analysisnewvalue时调用
  2. 在LegalizeOprand时调用
  3. 在ReplaceValueWith时调用,会把节点添加到NodesToAnalysis,在NodeUpdate或者NodeDelete的时候会添加。 具体还需要再分析一下NodeUpdate和NodeDelete什么时候被调用,也就是DAG.ReplaceAllUsesOfValueWith的过程。

问题:

什么时候一个节点会被标记为新节点?

  1. 在legalize过程中新建的节点,通过getNode方法获得的节点
  2. 一个节点被morph into另外一个节点
  3. 所有使用NewNode的节点都会被标记为NewNode

什么时候一个节点会被map?

ReplacedValues在什么时候会被用到?

主要用在check中,用在expensivecheck和expungenode中。

newnode和replacevalues有什么关系

RemapValue

ReplacedValues的性质

用途:用于remap, map一个value到另一个value

  1. remapped values are only used by nodes marked NewNode
  2. final result of applying replacedvalues is not marked newnode

使用情况

RepalceValueWith函数

Clone this wiki locally