[hellogcc] gcc中的数据类型与寄存器分配

  • From: 杨勇勇 <triple.yang@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Sun, 23 Jun 2013 23:06:12 +0800

大家好,

最近在做llvm的C编译器后端时遇到一个问题。
我的目标体系结构中有两类通用寄存器,一类用于算术逻辑运算,一类用于地址计算以及访存。两类寄存器都是32位,两者之间可以进行值传递。

显然,在做寄存器分配时区分指针以及32位整型可以消除一部分寄存器值传递代码。但是在llvm后端中将指针与32位整型都视为i32,所以在寄存器分配时无法区分指针与32位整型。更遗憾的是,llvm当前的mainline
source
tree中没有任何机制支持这种区分。在早前版本的llvm中支持的blackfin具有类似的寄存器分配问题,但是后来这个target被删掉了。

因为我对gcc内部不熟,故请教大家gcc是如何处理类似情况的。

先谢啦!

-- 
杨勇勇 (Yang Yong-Yong)

Other related posts: