aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/SourceManager.cpp
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2016-04-28 18:42:04 +0000
committerRui Ueyama <ruiu@google.com>2016-04-28 18:42:04 +0000
commit2b6fb803840d20ee7e93fd947b4990a983ed3652 (patch)
treedfe0894ed6f7ae4f54c9b0d117d4e00e42a3b741 /clang/lib/Basic/SourceManager.cpp
parentc5fce690316703b619c05e875c51a04b0ea0d547 (diff)
downloadllvm-2b6fb803840d20ee7e93fd947b4990a983ed3652.zip
llvm-2b6fb803840d20ee7e93fd947b4990a983ed3652.tar.gz
llvm-2b6fb803840d20ee7e93fd947b4990a983ed3652.tar.bz2
Skip scanRelocs for non-alloc sections.
Relocations against sections with no SHF_ALLOC bit are R_ABS relocations. Currently we are creating Relocations vector for them, but that is wasteful. This patch is to skip vector construction and to directly apply relocations in place. This patch seems to be pretty effective for large executables with debug info. r266158 (Rafael's patch to change the way how we apply relocations) caused a temporary performance degradation for such executables, but this patch makes it even faster than before. Time to link clang with debug info (output size is 1070 MB): before r266158: 15.312 seconds (0%) r266158: 17.301 seconds (+13.0%) Head: 16.484 seconds (+7.7%) w/patch: 13.166 seconds (-14.0%) Differential Revision: http://reviews.llvm.org/D19645 llvm-svn: 267917
Diffstat (limited to 'clang/lib/Basic/SourceManager.cpp')
0 files changed, 0 insertions, 0 deletions