【问题标题】:Control flow graph dominance控制流图优势
【发布时间】:2013-08-31 16:41:31
【问题描述】:

我正在为个人项目研究编译器,为此我正在查看来自英国一所大学的一些论文。我偶然发现的问题之一如下:

Draw a CFG which contains a definition followed by a use of a variable x, but in 
which the use of x is not dominated by any definitions of x.

这怎么可能?如果使用不受定义支配,这意味着使用 x 的块将 x 超出范围?我看的不对吗?

说我们有

1: int y = 2;

2: 如果 (y > 0)

3: 整数 x = 5;

4: 否则 x++;

在这种情况下,x 的使用不受定义支配,但 x 不在作用域内所以不能使用。没看懂……

【问题讨论】:

    标签: compiler-construction control-flow-graph


    【解决方案1】:

    请记住,x 的定义和它的声明是两个不同的东西,作用域只关心声明。考虑以下几点:

    int x;
    if (user_input_integer() == 0) {
        x = 0;
    } else {
        x = 1;
    }
    x++;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      相关资源
      最近更新 更多