From fc4addafb51fe085bc6c9b0677e685f19ec75bfc Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 9 Mar 2005 05:35:16 +0000 Subject: [PATCH] Use static_cast and #include Instructions.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20528 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/InstVisitor.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/include/llvm/Support/InstVisitor.h b/include/llvm/Support/InstVisitor.h index 6eef0f9a106..49b5ee109c0 100644 --- a/include/llvm/Support/InstVisitor.h +++ b/include/llvm/Support/InstVisitor.h @@ -51,6 +51,7 @@ #define LLVM_SUPPORT_INSTVISITOR_H #include "llvm/Function.h" +#include "llvm/Instructions.h" #include "llvm/Module.h" namespace llvm { @@ -66,7 +67,8 @@ class TerminatorInst; class BinaryOperator; class AllocationInst; #define DELEGATE(CLASS_TO_VISIT) \ - return ((SubClass*)this)->visit##CLASS_TO_VISIT((CLASS_TO_VISIT&)I) + return static_cast(this)-> \ + visit##CLASS_TO_VISIT(static_cast(I)) template @@ -81,21 +83,21 @@ public: template void visit(Iterator Start, Iterator End) { while (Start != End) - ((SubClass*)this)->visit(*Start++); + static_cast(this)->visit(*Start++); } // Define visitors for functions and basic blocks... // void visit(Module &M) { - ((SubClass*)this)->visitModule(M); + static_cast(this)->visitModule(M); visit(M.begin(), M.end()); } void visit(Function &F) { - ((SubClass*)this)->visitFunction(F); + static_cast(this)->visitFunction(F); visit(F.begin(), F.end()); } void visit(BasicBlock &BB) { - ((SubClass*)this)->visitBasicBlock(BB); + static_cast(this)->visitBasicBlock(BB); visit(BB.begin(), BB.end()); } @@ -113,7 +115,9 @@ public: abort(); // Build the switch statement using the Instruction.def file... #define HANDLE_INST(NUM, OPCODE, CLASS) \ - case Instruction::OPCODE:return ((SubClass*)this)->visit##OPCODE((CLASS&)I); + case Instruction::OPCODE: return \ + static_cast(this)-> \ + visit##OPCODE(static_cast(I)); #include "llvm/Instruction.def" } } -- 2.34.1