免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2560 | 回复: 8
打印 上一主题 下一主题

gcc mailing list 发问题没反应 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-23 10:01 |只看该作者 |倒序浏览
gcc mailing list 发问题没反应 一般要怎么用

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
2 [报告]
发表于 2013-10-23 10:05 |只看该作者
可以ping一下。或者直接去irc里问问。

论坛徽章:
1
综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00
3 [报告]
发表于 2013-10-23 10:56 |只看该作者
没办法。发帖子没人回是常事 @_@

论坛徽章:
0
4 [报告]
发表于 2013-10-23 12:14 |只看该作者
先这里问问

我要将一条rtl变成两条rtl,要怎么写define_expand

store 123,[abcd]
(set (mem:SI (symbol_ref:SI "abcd")) (const_int 123))

move reg , abcd
store 123 , [reg]

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
5 [报告]
发表于 2013-10-23 16:01 |只看该作者
首先,define_expand只能用于标准名字,“A define_expand is an RTL expression that looks almost like a define_insn; but, unlike the latter, a define_expand is used only for RTL generation and it can produce more than one RTL insn. ”。

看起来,你这个是一个move操作,所以需要定义mov的define_expand,具体的实现,可以先参考下现有gcc中的代码。

论坛徽章:
0
6 [报告]
发表于 2013-10-23 17:25 |只看该作者
非常感谢!我先去看资料

论坛徽章:
0
7 [报告]
发表于 2013-10-24 15:05 |只看该作者
用下面的代码,没效果。
  1. (define_expand "movsi_symbol_ref" [(set (mem:SI (match_operand:SI 0 "address_operand")) (match_operand:SI 1 "general_operand"))] ""
  2. "
  3. {
  4.         rtx symbol;

  5.         symbol = copy_to_reg (operands[0]);
  6.         emit_move_insn (operands[0], symbol);
  7.         operands[0] = symbol;
  8.         DONE;
  9. }"
  10. )
复制代码

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
8 [报告]
发表于 2013-10-24 15:29 |只看该作者
恩,我说过,define_expand只用于标准名字。movsi_symbol_ref不是标准名字吧,参见http://gcc.gnu.org/onlinedocs/gc ... html#Standard-Names

论坛徽章:
0
9 [报告]
发表于 2013-10-24 17:04 |只看该作者
我再试试,其它后端也有非标准名字的define_expand
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP