gpt4 book ai didi

fortran - gfortran 4.9.0 错误? WHERE 语句被优化掉

转载 作者:行者123 更新时间:2023-12-02 21:27:39 24 4
gpt4 key购买 nike

我有一段代码在 gfortran 下在调试构建和优化构建之间产生不同的结果。

PROGRAM test

IMPLICIT NONE

REAL, DIMENSION(10) :: a = 0.0
REAL, DIMENSION(10) :: b = 1.0

WRITE (*,*) b
WHERE (a .ne. 0.0) b = a
WRITE (*,*) b

END PROGRAM

当我将其编译为调试版本时,它会产生正确的结果。当我将其编译为优化版本时,它用 a 替换 b 的每个元素。

$ gfortran test.f
$ ./a.out
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
$ gfortran -O3 test.f
$ ./a.out
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

如果这是编译器错误,我该如何解决它?

最佳答案

我无法重现您的问题。我正在使用

gcc 版本 4.9.0 20140313(实验)(GCC)

在 x86_64-unknown-linux-gnu (Ubuntu 12.04 amd64) 上。对我来说,您的示例程序结果是:


$ gfortran where.f
$ ./a.out
1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000<br/>
1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000<br/>
$ gfortran -O3 where.f
$ ./a.out
1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000<br/>
1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000<br/>

那么,您使用的是哪个版本的 gfortran?请记住,4.9 尚未发布,因此预发布版本的日期可能很重要。此外,您使用的是哪个目标(即操作系统和位数)?如果您自己构建了 GCC,您是否运行了 GCC 测试套件来检查您的 gfortran 构建是否正常工作并且没有彻底损坏?

关于fortran - gfortran 4.9.0 错误? WHERE 语句被优化掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22429397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com