“顶级重新排序”是什么意思?

问题描述 投票:0回答:1

我有一个开放的 Fortran MPI 代码,在不使用优化标志的情况下编译和运行不会出现错误。当我设置 -O1 标志时,执行时出现分段错误错误。导致此问题的唯一优化标志是

-ftoplevel-reorder

您能否直观地解释一下该标志的作用以及发现代码中的错误(如果有)的最佳策略是什么?

optimization fortran mpi gfortran
1个回答
5
投票

来自 https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

-fno-toplevel-重新排序

不要重新排序顶级函数、变量和 asm 语句。按照它们在输入文件中出现的顺序输出它们。使用此选项时,不会删除未引用的静态变量。此选项旨在支持依赖于特定顺序的现有代码。对于新代码,最好尽可能使用属性。

在-O0级别启用。当显式禁用时,它还意味着 -fno-section-anchors,否则在某些目标上的 -O0 处启用。

您可能会越界访问数组,并且根据局部变量在堆栈上的放置方式,后果从不明显到致命崩溃。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.