The primary use of -fno-omit-frame-pointer appears to be to maintain some level
of debuggability of optimized code on platforms that need it. This makes sense
for some platforms (e.g., x86) but on ia64, maintaining a frame-pointer doesn't
improve debuggability at all, so in the cases where -fno-omit-frame-pointer is
specified for debugging-reasons, we pessimize the code for no benefit.
Perhaps it makes sense to leave the current -fno-omit-frame-pointer
functionality as a machine-specific flag (e.g., -mforce-frame-pointer), though I
have my doubts whether it's even worthwhile to do that.
Here is an example of what -fno-omit-frame-pointer does as of GCC 4.0.0
(experimental):
$ cat t.c
void func (void)
{
}
$ cc1 --version
GNU C version 4.0.0 20041115 (experimental) (ia64-unknown-linux-gnu)
compiled by GNU C version 3.3.5 (Debian 1:3.3.5-4).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
$ ./cc1 -O3 -fno-omit-frame-pointer t.c
$ cat t.s
.file "t.c"
.pred.safe_across_calls p1-p5,p16-p63
.text
.align 16
.global func#
.proc func#
func:
.prologue 2, 2
.mmb
nop 0
.vframe r2
mov r2 = r12
.body
nop 0
;;
.mib
nop 0
.restore sp
mov r12 = r2
br.ret.sptk.many b0
.endp func#
.ident "GCC: (GNU) 4.0.0 20041115 (experimental)"
--
Summary: -fno-omit-frame-pointer should have no effect on ia64
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: davidm at hpl dot hp dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: ia64-linux
GCC host triplet: ia64-linux
GCC target triplet: ia64-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19127