简体   繁体   English

GCC:冲突的优化

[英]GCC: conflicting optimizations

Due to long build times, I haven't been able to sufficiently narrow down the culprit leading to internal compiler error: Segmentation fault (I have managed to rule out LTO, though). 由于构建时间长,我无法充分缩小导致internal compiler error: Segmentation fault (不过,我设法排除了LTO)。 Present in GCC versions 4.8.2, 4.8.3, and 4.9.1, rather than a bug I'm suspecting a conflict between the remaining various optimization strategies: 目前存在于GCC版本4.8.2、4.8.3和4.9.1中,而不是错误,我怀疑其余各种优化策略之间存在冲突:

Generic: most likely unrelated, here for completeness 通用:很可能无关,此处出于完整性考虑

  • -pipe -管
  • -march=native -march =本地
  • -O3 -O3
  • -msse2 -msse2
  • -mfpmath=sse -mfpmath = sse
  • -ffast-math -快速数学

Graphite: loop optimization with regard to memory access Graphite:关于内存访问的循环优化

  • -floop-interchange -floop-互换
  • -floop-strip-mine -floop-strip-mine
  • -floop-block -floop块

Graphite: not really sure 石墨:不确定

  • -fgraphite-identity -石墨身份

ISL: loop optimizations with regard to memory access and automatic parallelism ISL:关于内存访问和自动并行性的循环优化

  • -floop-nest-optimize -floop-巢优化

Graphite: loop optimization with regard to automatic parallelism 石墨:关于自动并行性的循环优化

  • -floop-parallelize-all -floop-并行化所有
  • -ftree-parallelize-loops=2 -ftree-parallelize-loops = 2

Sets of options seem to share significant functional overlap. 选项集似乎共享大量的功能重叠。 If this has likely been leading to the segmentation fault during compilation, which options should I preserve and which should I cull in order to maximize performance? 如果这可能导致编译期间出现分段错误,那么应该保留哪些选项,并且应该剔除哪些选项以最大化性能?

Finally narrowed the segfault down to the -ffast-math and -floop-parallelize-all options, exclusively. 最后,仅将段错误缩小到-ffast-math-floop-parallelize-all选项。 This issue is identical to [4.8/4.9 Regression] [graphite] Segmentation fault with -Ofast -floop-paralle... , and should be fixed upstream. 此问题与具有-Ofast -floop-paralle ...的[4.8 / 4.9 Regression] [graphite] Segmentation fault相同 ,应在上游修复。 Since the fix was pushed Jun 29, while gcc 4.9.1 was released Jul 16 it was branched in Apr, it is not included in the 4.8.3 and 4.9.1 releases. 由于该修复程序是在6月29日发布的,而gcc 4.9.1在7月16日发布了,它是在4月分支的,因此它不在4.8.3和4.9.1版本中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM