Lines Matching refs:GV
83 GVMemoryBlock(const GlobalVariable *GV) in GVMemoryBlock() argument
84 : CallbackVH(const_cast<GlobalVariable*>(GV)) {} in GVMemoryBlock()
89 static char *Create(const GlobalVariable *GV, const DataLayout& TD) { in Create() argument
90 Type *ElTy = GV->getType()->getElementType(); in Create()
94 TD.getPreferredAlignment(GV)) in Create()
96 new(RawMemory) GVMemoryBlock(GV); in Create()
110 char *ExecutionEngine::getMemoryForGV(const GlobalVariable *GV) { in getMemoryForGV() argument
111 return GVMemoryBlock::Create(GV, *getDataLayout()); in getMemoryForGV()
154 void ExecutionEngine::addGlobalMapping(const GlobalValue *GV, void *Addr) { in addGlobalMapping() argument
157 DEBUG(dbgs() << "JIT: Map \'" << GV->getName() in addGlobalMapping()
159 void *&CurVal = EEState.getGlobalAddressMap(locked)[GV]; in addGlobalMapping()
167 assert((V == 0 || GV == 0) && "GlobalMapping already established!"); in addGlobalMapping()
168 V = GV; in addGlobalMapping()
189 void *ExecutionEngine::updateGlobalMapping(const GlobalValue *GV, void *Addr) { in updateGlobalMapping() argument
197 return EEState.RemoveMapping(locked, GV); in updateGlobalMapping()
199 void *&CurVal = Map[GV]; in updateGlobalMapping()
210 assert((V == 0 || GV == 0) && "GlobalMapping already established!"); in updateGlobalMapping()
211 V = GV; in updateGlobalMapping()
216 void *ExecutionEngine::getPointerToGlobalIfAvailable(const GlobalValue *GV) { in getPointerToGlobalIfAvailable() argument
220 EEState.getGlobalAddressMap(locked).find(GV); in getPointerToGlobalIfAvailable()
295 GlobalVariable *GV = module->getNamedGlobal(Name); in runStaticConstructorsDestructors() local
301 if (!GV || GV->isDeclaration() || GV->hasLocalLinkage()) return; in runStaticConstructorsDestructors()
305 ConstantArray *InitList = dyn_cast<ConstantArray>(GV->getInitializer()); in runStaticConstructorsDestructors()
518 void *ExecutionEngine::getPointerToGlobal(const GlobalValue *GV) { in getPointerToGlobal() argument
519 if (Function *F = const_cast<Function*>(dyn_cast<Function>(GV))) in getPointerToGlobal()
523 if (void *P = EEState.getGlobalAddressMap(locked)[GV]) in getPointerToGlobal()
528 const_cast<GlobalVariable *>(dyn_cast<GlobalVariable>(GV))) in getPointerToGlobal()
533 return EEState.getGlobalAddressMap(locked)[GV]; in getPointerToGlobal()
601 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
603 GV.IntVal = GV.IntVal.trunc(BitWidth); in getConstantValue()
604 return GV; in getConstantValue()
607 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
609 GV.IntVal = GV.IntVal.zext(BitWidth); in getConstantValue()
610 return GV; in getConstantValue()
613 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
615 GV.IntVal = GV.IntVal.sext(BitWidth); in getConstantValue()
616 return GV; in getConstantValue()
620 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
621 GV.FloatVal = float(GV.DoubleVal); in getConstantValue()
622 return GV; in getConstantValue()
626 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
627 GV.DoubleVal = double(GV.FloatVal); in getConstantValue()
628 return GV; in getConstantValue()
631 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
633 GV.FloatVal = float(GV.IntVal.roundToDouble()); in getConstantValue()
635 GV.DoubleVal = GV.IntVal.roundToDouble(); in getConstantValue()
638 (void)apf.convertFromAPInt(GV.IntVal, in getConstantValue()
641 GV.IntVal = apf.bitcastToAPInt(); in getConstantValue()
643 return GV; in getConstantValue()
646 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
648 GV.FloatVal = float(GV.IntVal.signedRoundToDouble()); in getConstantValue()
650 GV.DoubleVal = GV.IntVal.signedRoundToDouble(); in getConstantValue()
653 (void)apf.convertFromAPInt(GV.IntVal, in getConstantValue()
656 GV.IntVal = apf.bitcastToAPInt(); in getConstantValue()
658 return GV; in getConstantValue()
662 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
665 GV.IntVal = APIntOps::RoundFloatToAPInt(GV.FloatVal, BitWidth); in getConstantValue()
667 GV.IntVal = APIntOps::RoundDoubleToAPInt(GV.DoubleVal, BitWidth); in getConstantValue()
669 APFloat apf = APFloat(APFloat::x87DoubleExtended, GV.IntVal); in getConstantValue()
675 GV.IntVal = v; // endian? in getConstantValue()
677 return GV; in getConstantValue()
680 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
683 GV.IntVal = APInt(PtrWidth, uintptr_t(GV.PointerVal)); in getConstantValue()
685 GV.IntVal = GV.IntVal.zextOrTrunc(IntWidth); in getConstantValue()
686 return GV; in getConstantValue()
689 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
691 GV.IntVal = GV.IntVal.zextOrTrunc(PtrWidth); in getConstantValue()
692 assert(GV.IntVal.getBitWidth() <= 64 && "Bad pointer width"); in getConstantValue()
693 GV.PointerVal = PointerTy(uintptr_t(GV.IntVal.getZExtValue())); in getConstantValue()
694 return GV; in getConstantValue()
697 GenericValue GV = getConstantValue(Op0); in getConstantValue() local
704 GV.FloatVal = GV.IntVal.bitsToFloat(); in getConstantValue()
706 GV.DoubleVal = GV.IntVal.bitsToDouble(); in getConstantValue()
710 GV.IntVal = APInt::floatToBits(GV.FloatVal); in getConstantValue()
714 GV.IntVal = APInt::doubleToBits(GV.DoubleVal); in getConstantValue()
720 return GV; in getConstantValue()
737 GenericValue GV; in getConstantValue() local
743 case Instruction::Add: GV.IntVal = LHS.IntVal + RHS.IntVal; break; in getConstantValue()
744 case Instruction::Sub: GV.IntVal = LHS.IntVal - RHS.IntVal; break; in getConstantValue()
745 case Instruction::Mul: GV.IntVal = LHS.IntVal * RHS.IntVal; break; in getConstantValue()
746 case Instruction::UDiv:GV.IntVal = LHS.IntVal.udiv(RHS.IntVal); break; in getConstantValue()
747 case Instruction::SDiv:GV.IntVal = LHS.IntVal.sdiv(RHS.IntVal); break; in getConstantValue()
748 case Instruction::URem:GV.IntVal = LHS.IntVal.urem(RHS.IntVal); break; in getConstantValue()
749 case Instruction::SRem:GV.IntVal = LHS.IntVal.srem(RHS.IntVal); break; in getConstantValue()
750 case Instruction::And: GV.IntVal = LHS.IntVal & RHS.IntVal; break; in getConstantValue()
751 case Instruction::Or: GV.IntVal = LHS.IntVal | RHS.IntVal; break; in getConstantValue()
752 case Instruction::Xor: GV.IntVal = LHS.IntVal ^ RHS.IntVal; break; in getConstantValue()
759 GV.FloatVal = LHS.FloatVal + RHS.FloatVal; break; in getConstantValue()
761 GV.FloatVal = LHS.FloatVal - RHS.FloatVal; break; in getConstantValue()
763 GV.FloatVal = LHS.FloatVal * RHS.FloatVal; break; in getConstantValue()
765 GV.FloatVal = LHS.FloatVal / RHS.FloatVal; break; in getConstantValue()
767 GV.FloatVal = std::fmod(LHS.FloatVal,RHS.FloatVal); break; in getConstantValue()
774 GV.DoubleVal = LHS.DoubleVal + RHS.DoubleVal; break; in getConstantValue()
776 GV.DoubleVal = LHS.DoubleVal - RHS.DoubleVal; break; in getConstantValue()
778 GV.DoubleVal = LHS.DoubleVal * RHS.DoubleVal; break; in getConstantValue()
780 GV.DoubleVal = LHS.DoubleVal / RHS.DoubleVal; break; in getConstantValue()
782 GV.DoubleVal = std::fmod(LHS.DoubleVal,RHS.DoubleVal); break; in getConstantValue()
794 GV.IntVal = apfLHS.bitcastToAPInt(); in getConstantValue()
799 GV.IntVal = apfLHS.bitcastToAPInt(); in getConstantValue()
804 GV.IntVal = apfLHS.bitcastToAPInt(); in getConstantValue()
809 GV.IntVal = apfLHS.bitcastToAPInt(); in getConstantValue()
814 GV.IntVal = apfLHS.bitcastToAPInt(); in getConstantValue()
820 return GV; in getConstantValue()
854 else if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(C)) in getConstantValue() local
855 Result = PTOGV(getOrEmitGlobalVariable(const_cast<GlobalVariable*>(GV))); in getConstantValue()
1198 const GlobalValue *GV = I; in emitGlobals() local
1199 if (GV->hasLocalLinkage() || GV->isDeclaration() || in emitGlobals()
1200 GV->hasAppendingLinkage() || !GV->hasName()) in emitGlobals()
1204 LinkedGlobalsMap[std::make_pair(GV->getName(), GV->getType())]; in emitGlobals()
1209 GVEntry = GV; in emitGlobals()
1221 if (GV->hasExternalLinkage() || GVEntry->hasExternalWeakLinkage()) in emitGlobals()
1222 GVEntry = GV; in emitGlobals()
1263 const GlobalValue *GV = NonCanonicalGlobals[i]; in emitGlobals() local
1265 LinkedGlobalsMap[std::make_pair(GV->getName(), GV->getType())]; in emitGlobals()
1268 addGlobalMapping(GV, Ptr); in emitGlobals()
1292 void ExecutionEngine::EmitGlobalVariable(const GlobalVariable *GV) { in EmitGlobalVariable() argument
1293 void *GA = getPointerToGlobalIfAvailable(GV); in EmitGlobalVariable()
1297 GA = getMemoryForGV(GV); in EmitGlobalVariable()
1302 addGlobalMapping(GV, GA); in EmitGlobalVariable()
1306 if (!GV->isThreadLocal()) in EmitGlobalVariable()
1307 InitializeMemory(GV->getInitializer(), GA); in EmitGlobalVariable()
1309 Type *ElTy = GV->getType()->getElementType(); in EmitGlobalVariable()