免费注册 查看新帖 |

Chinaunix

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

不知道是不是gcc的bug? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-18 19:44 |只看该作者 |倒序浏览
如下的例子:
main()
{
   long long int a;
   double b;
   a=4607182418800017408;
   b=*(double *)&a;
   printf("%f\n",b);
}

在x86 64/linux上使用gcc4.1.2编译,O0优化时的结果是1.000000,O3优化时的结果是0.000000。
看了一下汇编,发现在O3的时候好像优化有点问题,必须加上选项-fno-strict-aliasing结果才能正确。

论坛徽章:
0
2 [报告]
发表于 2008-12-18 19:49 |只看该作者

另外一个bug???

还有一个Bug???

如下的例子:
1.f:
    subroutine aaa(a,nla,nlo)
    include "1.h"
    nlo=nlo-1
    end

1.h:
    interface
    subroutine aaa(a1,nla1,nlo1)
    end
    end interface

在x86 64/linux下使用gfortran(gcc4.1.2版本)编译,报错:
internal compiler error: Segmentation fault

论坛徽章:
0
3 [报告]
发表于 2008-12-18 23:15 |只看该作者
4.3.2 x64,O0和O1都是1.000000,O2和O3都是0.000000。
   b=*(double *)&a;
这一句的别名分析出问题了。

gfortran不知道,不知道最新svn上的代码解决这个问题没有,lz可以去报告,或者直接patch。

论坛徽章:
0
4 [报告]
发表于 2008-12-19 10:36 |只看该作者

回复 #1 精灵鼠小弟 的帖子

没有遇到,是不是你的svn代码问题

论坛徽章:
0
5 [报告]
发表于 2008-12-19 14:42 |只看该作者
原帖由 kns1024wh 于 2008-12-19 10:36 发表
没有遇到,是不是你的svn代码问题

你的gcc是x86的还是x86_64的?

论坛徽章:
0
6 [报告]
发表于 2008-12-21 09:25 |只看该作者
我是在x86_64的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP