나는 Fortran과 C 언어로 프로그래밍을하고 있는데, C 전처리 기는 전처리 상수로 코드를 추가하거나 숨기는 유연성이 꽤 멋지다고 생각한다. Fortran에서이 작업을 수행하는 방법을 모르지만 궁금합니다. Fortran 컴파일러가 컴파일 타임에 제거 할 수있는 코드를 감지합니까?Fortran은 도달 할 수없는 분기를 최적화합니까?
이program test_branch
implicit none
logical, parameter :: echo = .false.
integer :: n, sum
sum = 0
do n=1,100
sum = sum + n**2
if (echo) then
print *, "Sum:", sum
end if
end do
end program test_branch
는 에코의 값은 변경하지 않습니다,하지만 컴파일러는 이것을 실현하지 않는 경우, 그것은 여전히 분기마다 검사뿐만 아니라 포함됩니다
예를 들어이 걸릴 실행 불가능한 코드. 분명히 이것은 분기 예측과 관련해서는 큰 차이가 아니지만 그와 같은 표현식을 추가 할 수 있고 문자 그대로 비용이 들지 않는지 궁금합니다. 이 작업을 수행하는 최적화 설정이 있습니까? 아니면 기본적으로 완료 될 수 있습니까?
BTW 대부분의 Fortran 컴파일러에서 C 전 처리기를 사용할 수 있습니다. –
'gcc' /'gfortran'의 경우 컴파일러 플래그'-fdump-tree-optimized'로 최적화 된 중간 코드를 출력 할 수 있습니다. – Stefan