猿代码 — 科研/AI模型/高性能计算
0

GCC:从AST到GIMPLE

摘要: 当 gimplify_function_tree() 最终从 finish_function() 调用时,AST 被 gimplified 化。GIMPLE 表示基于中描述的 SIMPLE根据这篇论文,目标是将树表示为基本树 语句:疙瘩树x=a 双质 bx=一个x=演员 bf(参数)* ...

当 gimplify_function_tree() 最终从 finish_function() 调用时,AST 被 gimplified 化。

GIMPLE 表示基于 [2] 中描述的 SIMPLE

根据这篇论文,目标是将树表示为基本树 语句:

疙瘩树
x=a 双质 bx=一个x=演员 bf(参数)
*p=a 双质 b*p=一个*p=演员 b-
x=unop ax=*qx=&yx=f(参数)
*p=unop a*p=*q*p=&y*p=f(参数)

根据需要在函数中创建临时变量 create_tmp_var() 和 declare_tmp_vars()。

在此阶段,GCC 优化复杂的条件表达式,即

 if (a || b) stmt;

翻译成

 if (a) goto L1;
 if (b) goto L1; else goto L2;
 L1:
 stmt;
 L2:

此外,条件表达式的每个分支都包装在 STATEMENT_LIST树。

说点什么...

已有0条评论

最新评论...

本文作者
2024-2-14 01:48
  • 0
    粉丝
  • 190
    阅读
  • 0
    回复
资讯幻灯片
热门评论
热门专题
排行榜
Copyright   ©2015-2023   猿代码-超算人才智造局 高性能计算|并行计算|人工智能      ( 京ICP备2021026424号-2 )