我看起來像一些Fortran代碼:有什麼辦法可以判斷變量是否被優化了?
subroutine foo(mx,my,mz)
real pts(3,mx,my,mz)
end
陣列點從來沒有真正在子程序中使用 - 我只是忘了刪除它,當我重構我的代碼。現在,由於fortran沒有堆棧和堆的概念,它取決於編譯器在哪裏分配pts - 這是gfortran中數組大小的函數,但我一直無法弄清楚portland組編譯器處理這個。
是否有可能判斷pts是分配在堆棧,堆上,還是完全優化出來(因爲它可能應該是這樣)?是否有可能有一個stackoverflow並不知道它(即沒有運行時錯誤)?我的直覺是,應該可以通過查看編譯器生成的程序集來判斷,但是我不知道我會在那裏看到什麼。