aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorGabor Greif <ggreif@gmail.com>2010-07-23 10:23:01 +0000
committerGabor Greif <ggreif@gmail.com>2010-07-23 10:23:01 +0000
commit9843688f97b770bde4091f23f7ccf31cb9b47990 (patch)
tree318bf13de9525fd9916c33932b042851f2bff7e8 /lib
parent6252f6ea11a05d6e4c340e7dd26e37daa29c5cc1 (diff)
downloadexternal_llvm-9843688f97b770bde4091f23f7ccf31cb9b47990.zip
external_llvm-9843688f97b770bde4091f23f7ccf31cb9b47990.tar.gz
external_llvm-9843688f97b770bde4091f23f7ccf31cb9b47990.tar.bz2
do not (implicitly) dereference iterator many times, cache it instead
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109222 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/PIC16/PIC16Passes/PIC16Overlay.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Target/PIC16/PIC16Passes/PIC16Overlay.cpp b/lib/Target/PIC16/PIC16Passes/PIC16Overlay.cpp
index 5ecb6aa..0f8928a 100644
--- a/lib/Target/PIC16/PIC16Passes/PIC16Overlay.cpp
+++ b/lib/Target/PIC16/PIC16Passes/PIC16Overlay.cpp
@@ -171,8 +171,9 @@ void PIC16Overlay::MarkIndirectlyCalledFunctions(Module &M) {
for (Module::iterator MI = M.begin(), E = M.end(); MI != E; ++MI) {
for (Value::use_iterator I = MI->use_begin(), E = MI->use_end(); I != E;
++I) {
- if ((!isa<CallInst>(I) && !isa<InvokeInst>(I))
- || !CallSite(cast<Instruction>(I)).isCallee(I)) {
+ User *U = *I;
+ if ((!isa<CallInst>(U) && !isa<InvokeInst>(U))
+ || !CallSite(cast<Instruction>(U)).isCallee(I)) {
setColor(MI, ++IndirectCallColor);
break;
}