Lines Matching defs:GV

97   GVMemoryBlock(const GlobalVariable *GV)
98 : CallbackVH(const_cast<GlobalVariable*>(GV)) {}
103 static char *Create(const GlobalVariable *GV, const DataLayout& TD) {
104 Type *ElTy = GV->getValueType();
107 alignTo(sizeof(GVMemoryBlock), TD.getPreferredAlign(GV)) + GVSize);
108 new(RawMemory) GVMemoryBlock(GV);
122 char *ExecutionEngine::getMemoryForGV(const GlobalVariable *GV) {
123 return GVMemoryBlock::Create(GV, getDataLayout());
163 GlobalVariable *GV = M->getGlobalVariable(Name, AllowInternal);
164 if (GV && !GV->isDeclaration())
165 return GV;
187 std::string ExecutionEngine::getMangledName(const GlobalValue *GV) {
188 assert(GV->hasName() && "Global must have name.");
194 GV->getDataLayout().isDefault()
196 : GV->getDataLayout();
198 Mangler::getNameWithPrefix(FullName, GV->getName(), DL);
202 void ExecutionEngine::addGlobalMapping(const GlobalValue *GV, void *Addr) {
204 addGlobalMapping(getMangledName(GV), (uint64_t) Addr);
240 uint64_t ExecutionEngine::updateGlobalMapping(const GlobalValue *GV,
243 return updateGlobalMapping(getMangledName(GV), (uint64_t) Addr);
291 void *ExecutionEngine::getPointerToGlobalIfAvailable(const GlobalValue *GV) {
293 return getPointerToGlobalIfAvailable(getMangledName(GV));
317 if (GlobalValue *GV = M->getNamedValue(Name))
318 return GV;
369 GlobalVariable *GV = module.getNamedGlobal(Name);
375 if (!GV || GV->isDeclaration() || GV->hasLocalLinkage()) return;
379 ConstantArray *InitList = dyn_cast<ConstantArray>(GV->getInitializer());
564 void *ExecutionEngine::getPointerToGlobal(const GlobalValue *GV) {
565 if (Function *F = const_cast<Function*>(dyn_cast<Function>(GV)))
569 if (void* P = getPointerToGlobalIfAvailable(GV))
574 const_cast<GlobalVariable *>(dyn_cast<GlobalVariable>(GV)))
579 return getPointerToGlobalIfAvailable(GV);
662 GenericValue GV = getConstantValue(Op0);
664 GV.IntVal = GV.IntVal.trunc(BitWidth);
665 return GV;
668 GenericValue GV = getConstantValue(Op0);
670 GV.IntVal = GV.IntVal.zext(BitWidth);
671 return GV;
674 GenericValue GV = getConstantValue(Op0);
676 GV.IntVal = GV.IntVal.sext(BitWidth);
677 return GV;
681 GenericValue GV = getConstantValue(Op0);
682 GV.FloatVal = float(GV.DoubleVal);
683 return GV;
687 GenericValue GV = getConstantValue(Op0);
688 GV.DoubleVal = double(GV.FloatVal);
689 return GV;
692 GenericValue GV = getConstantValue(Op0);
694 GV.FloatVal = float(GV.IntVal.roundToDouble());
696 GV.DoubleVal = GV.IntVal.roundToDouble();
699 (void)apf.convertFromAPInt(GV.IntVal,
702 GV.IntVal = apf.bitcastToAPInt();
704 return GV;
707 GenericValue GV = getConstantValue(Op0);
709 GV.FloatVal = float(GV.IntVal.signedRoundToDouble());
711 GV.DoubleVal = GV.IntVal.signedRoundToDouble();
714 (void)apf.convertFromAPInt(GV.IntVal,
717 GV.IntVal = apf.bitcastToAPInt();
719 return GV;
723 GenericValue GV = getConstantValue(Op0);
726 GV.IntVal = APIntOps::RoundFloatToAPInt(GV.FloatVal, BitWidth);
728 GV.IntVal = APIntOps::RoundDoubleToAPInt(GV.DoubleVal, BitWidth);
730 APFloat apf = APFloat(APFloat::x87DoubleExtended(), GV.IntVal);
736 GV.IntVal = v; // endian?
738 return GV;
741 GenericValue GV = getConstantValue(Op0);
744 GV.IntVal = APInt(PtrWidth, uintptr_t(GV.PointerVal));
746 GV.IntVal = GV.IntVal.zextOrTrunc(IntWidth);
747 return GV;
750 GenericValue GV = getConstantValue(Op0);
752 GV.IntVal = GV.IntVal.zextOrTrunc(PtrWidth);
753 assert(GV.IntVal.getBitWidth() <= 64 && "Bad pointer width");
754 GV.PointerVal = PointerTy(uintptr_t(GV.IntVal.getZExtValue()));
755 return GV;
758 GenericValue GV = getConstantValue(Op0);
765 GV.FloatVal = GV.IntVal.bitsToFloat();
767 GV.DoubleVal = GV.IntVal.bitsToDouble();
771 GV.IntVal = APInt::floatToBits(GV.FloatVal);
775 GV.IntVal = APInt::doubleToBits(GV.DoubleVal);
781 return GV;
798 GenericValue GV;
804 case Instruction::Add: GV.IntVal = LHS.IntVal + RHS.IntVal; break;
805 case Instruction::Sub: GV.IntVal = LHS.IntVal - RHS.IntVal; break;
806 case Instruction::Mul: GV.IntVal = LHS.IntVal * RHS.IntVal; break;
807 case Instruction::UDiv:GV.IntVal = LHS.IntVal.udiv(RHS.IntVal); break;
808 case Instruction::SDiv:GV.IntVal = LHS.IntVal.sdiv(RHS.IntVal); break;
809 case Instruction::URem:GV.IntVal = LHS.IntVal.urem(RHS.IntVal); break;
810 case Instruction::SRem:GV.IntVal = LHS.IntVal.srem(RHS.IntVal); break;
811 case Instruction::And: GV.IntVal = LHS.IntVal & RHS.IntVal; break;
812 case Instruction::Or: GV.IntVal = LHS.IntVal | RHS.IntVal; break;
813 case Instruction::Xor: GV.IntVal = LHS.IntVal ^ RHS.IntVal; break;
820 GV.FloatVal = LHS.FloatVal + RHS.FloatVal; break;
822 GV.FloatVal = LHS.FloatVal - RHS.FloatVal; break;
824 GV.FloatVal = LHS.FloatVal * RHS.FloatVal; break;
826 GV.FloatVal = LHS.FloatVal / RHS.FloatVal; break;
828 GV.FloatVal = std::fmod(LHS.FloatVal,RHS.FloatVal); break;
835 GV.DoubleVal = LHS.DoubleVal + RHS.DoubleVal; break;
837 GV.DoubleVal = LHS.DoubleVal - RHS.DoubleVal; break;
839 GV.DoubleVal = LHS.DoubleVal * RHS.DoubleVal; break;
841 GV.DoubleVal = LHS.DoubleVal / RHS.DoubleVal; break;
843 GV.DoubleVal = std::fmod(LHS.DoubleVal,RHS.DoubleVal); break;
855 GV.IntVal = apfLHS.bitcastToAPInt();
860 GV.IntVal = apfLHS.bitcastToAPInt();
865 GV.IntVal = apfLHS.bitcastToAPInt();
870 GV.IntVal = apfLHS.bitcastToAPInt();
874 GV.IntVal = apfLHS.bitcastToAPInt();
880 return GV;
923 else if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(C))
924 Result = PTOGV(getOrEmitGlobalVariable(const_cast<GlobalVariable*>(GV)));
1222 for (const auto &GV : M->globals()) {
1223 if (GV.hasLocalLinkage() || GV.isDeclaration() ||
1224 GV.hasAppendingLinkage() || !GV.hasName())
1228 std::string(GV.getName()), GV.getType())];
1233 GVEntry = &GV;
1243 if (GV.hasExternalLinkage() || GVEntry->hasExternalWeakLinkage())
1244 GVEntry = &GV;
1251 for (const auto &GV : M->globals()) {
1255 std::string(GV.getName()), GV.getType())]) {
1257 if (GVEntry != &GV) {
1258 NonCanonicalGlobals.push_back(&GV);
1264 if (!GV.isDeclaration()) {
1265 addGlobalMapping(&GV, getMemoryForGV(&GV));
1270 std::string(GV.getName())))
1271 addGlobalMapping(&GV, SymAddr);
1274 +GV.getName());
1282 for (const GlobalValue *GV : NonCanonicalGlobals) {
1284 std::string(GV->getName()), GV->getType())];
1287 addGlobalMapping(GV, Ptr);
1293 for (const auto &GV : M->globals()) {
1294 if (!GV.isDeclaration()) {
1297 std::string(GV.getName()), GV.getType())])
1298 if (GVEntry != &GV) // Not the canonical variable.
1301 emitGlobalVariable(&GV);
1310 void ExecutionEngine::emitGlobalVariable(const GlobalVariable *GV) {
1311 void *GA = getPointerToGlobalIfAvailable(GV);
1315 GA = getMemoryForGV(GV);
1320 addGlobalMapping(GV, GA);
1324 if (!GV->isThreadLocal())
1325 InitializeMemory(GV->getInitializer(), GA);
1327 Type *ElTy = GV->getValueType();