aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/ModuloScheduling
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-10-09 21:48:45 +0000
committerChris Lattner <sabre@nondot.org>2004-10-09 21:48:45 +0000
commit9b34a6101908c36df659fe0b188713c949a32304 (patch)
treec125ed4872961a8e1bdafab0c4ca4d2ad98f2172 /lib/CodeGen/ModuloScheduling
parent83d72bcd11d8d35a4031172e924453da9aec29c6 (diff)
Eliminate global pointers that are only stored a single value and null if
we know that all uses of the global will trap if the pointer contained is null. In this case, we forward substitute the stored value to any uses. This has the effect of devirtualizing trivial globals in trivial cases. For example, 164.gzip contains this: gzip.h:extern int (*read_buf) OF((char *buf, unsigned size)); bits.c: read_buf = file_read; deflate.c: lookahead = read_buf((char*)window, deflate.c: n = read_buf((char*)window+strstart+lookahead, more); Since read_buf has to point to file_read at every use, we just replace the calls through read_buf with a direct call to file_read. This occurs in several benchmarks, including 176.gcc and 164.gzip. Direct calls are good and stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16871 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/ModuloScheduling')
0 files changed, 0 insertions, 0 deletions