From 8c7f24a36ad7d5aa7322a64d22666fec35fb8478 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 21 Mar 2009 06:55:54 +0000 Subject: [PATCH] add a fastpath to ConstantExpr::getBitCast to handle the case when an obviously unneeded bitcast is requested. This is common for frontends who just unconditionally cast even if the target is often the right type already. THis prevents going into getFoldedCast which switches on the opcode and does a bunch of other stuff before doing the same opzn. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67435 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/VMCore/Constants.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index ed1e04ad547..6c99a1ffe88 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -1996,6 +1996,11 @@ Constant *ConstantExpr::getBitCast(Constant *C, const Type *DstTy) { unsigned DstBitSize = DstTy->getPrimitiveSizeInBits(); #endif assert(SrcBitSize == DstBitSize && "BitCast requires types of same width"); + + // It is common to ask for a bitcast of a value to its own type, handle this + // speedily. + if (C->getType() == DstTy) return C; + return getFoldedCast(Instruction::BitCast, C, DstTy); } -- 2.34.1