Lines Matching defs:GV

98   GVMemoryBlock(const GlobalVariable *GV)
99 : CallbackVH(const_cast<GlobalVariable*>(GV)) {}
104 static char *Create(const GlobalVariable *GV, const DataLayout& TD) {
105 Type *ElTy = GV->getValueType();
108 alignTo(sizeof(GVMemoryBlock), TD.getPreferredAlign(GV)) + GVSize);
109 new(RawMemory) GVMemoryBlock(GV);
123 char *ExecutionEngine::getMemoryForGV(const GlobalVariable *GV) {
124 return GVMemoryBlock::Create(GV, getDataLayout());
164 GlobalVariable *GV = M->getGlobalVariable(Name, AllowInternal);
165 if (GV && !GV->isDeclaration())
166 return GV;
188 std::string ExecutionEngine::getMangledName(const GlobalValue *GV) {
189 assert(GV->hasName() && "Global must have name.");
195 GV->getDataLayout().isDefault()
197 : GV->getDataLayout();
199 Mangler::getNameWithPrefix(FullName, GV->getName(), DL);
203 void ExecutionEngine::addGlobalMapping(const GlobalValue *GV, void *Addr) {
205 addGlobalMapping(getMangledName(GV), (uint64_t) Addr);
241 uint64_t ExecutionEngine::updateGlobalMapping(const GlobalValue *GV,
244 return updateGlobalMapping(getMangledName(GV), (uint64_t) Addr);
292 void *ExecutionEngine::getPointerToGlobalIfAvailable(const GlobalValue *GV) {
294 return getPointerToGlobalIfAvailable(getMangledName(GV));
318 if (GlobalValue *GV = M->getNamedValue(Name))
319 return GV;
370 GlobalVariable *GV = module.getNamedGlobal(Name);
376 if (!GV || GV->isDeclaration() || GV->hasLocalLinkage()) return;
380 ConstantArray *InitList = dyn_cast<ConstantArray>(GV->getInitializer());
565 void *ExecutionEngine::getPointerToGlobal(const GlobalValue *GV) {
566 if (Function *F = const_cast<Function*>(dyn_cast<Function>(GV)))
570 if (void* P = getPointerToGlobalIfAvailable(GV))
575 const_cast<GlobalVariable *>(dyn_cast<GlobalVariable>(GV)))
580 return getPointerToGlobalIfAvailable(GV);
663 GenericValue GV = getConstantValue(Op0);
665 GV.IntVal = GV.IntVal.trunc(BitWidth);
666 return GV;
669 GenericValue GV = getConstantValue(Op0);
671 GV.IntVal = GV.IntVal.zext(BitWidth);
672 return GV;
675 GenericValue GV = getConstantValue(Op0);
677 GV.IntVal = GV.IntVal.sext(BitWidth);
678 return GV;
682 GenericValue GV = getConstantValue(Op0);
683 GV.FloatVal = float(GV.DoubleVal);
684 return GV;
688 GenericValue GV = getConstantValue(Op0);
689 GV.DoubleVal = double(GV.FloatVal);
690 return GV;
693 GenericValue GV = getConstantValue(Op0);
695 GV.FloatVal = float(GV.IntVal.roundToDouble());
697 GV.DoubleVal = GV.IntVal.roundToDouble();
700 (void)apf.convertFromAPInt(GV.IntVal,
703 GV.IntVal = apf.bitcastToAPInt();
705 return GV;
708 GenericValue GV = getConstantValue(Op0);
710 GV.FloatVal = float(GV.IntVal.signedRoundToDouble());
712 GV.DoubleVal = GV.IntVal.signedRoundToDouble();
715 (void)apf.convertFromAPInt(GV.IntVal,
718 GV.IntVal = apf.bitcastToAPInt();
720 return GV;
724 GenericValue GV = getConstantValue(Op0);
727 GV.IntVal = APIntOps::RoundFloatToAPInt(GV.FloatVal, BitWidth);
729 GV.IntVal = APIntOps::RoundDoubleToAPInt(GV.DoubleVal, BitWidth);
731 APFloat apf = APFloat(APFloat::x87DoubleExtended(), GV.IntVal);
737 GV.IntVal = v; // endian?
739 return GV;
742 GenericValue GV = getConstantValue(Op0);
745 GV.IntVal = APInt(PtrWidth, uintptr_t(GV.PointerVal));
747 GV.IntVal = GV.IntVal.zextOrTrunc(IntWidth);
748 return GV;
751 GenericValue GV = getConstantValue(Op0);
753 GV.IntVal = GV.IntVal.zextOrTrunc(PtrWidth);
754 assert(GV.IntVal.getBitWidth() <= 64 && "Bad pointer width");
755 GV.PointerVal = PointerTy(uintptr_t(GV.IntVal.getZExtValue()));
756 return GV;
759 GenericValue GV = getConstantValue(Op0);
766 GV.FloatVal = GV.IntVal.bitsToFloat();
768 GV.DoubleVal = GV.IntVal.bitsToDouble();
772 GV.IntVal = APInt::floatToBits(GV.FloatVal);
776 GV.IntVal = APInt::doubleToBits(GV.DoubleVal);
782 return GV;
799 GenericValue GV;
805 case Instruction::Add: GV.IntVal = LHS.IntVal + RHS.IntVal; break;
806 case Instruction::Sub: GV.IntVal = LHS.IntVal - RHS.IntVal; break;
807 case Instruction::Mul: GV.IntVal = LHS.IntVal * RHS.IntVal; break;
808 case Instruction::UDiv:GV.IntVal = LHS.IntVal.udiv(RHS.IntVal); break;
809 case Instruction::SDiv:GV.IntVal = LHS.IntVal.sdiv(RHS.IntVal); break;
810 case Instruction::URem:GV.IntVal = LHS.IntVal.urem(RHS.IntVal); break;
811 case Instruction::SRem:GV.IntVal = LHS.IntVal.srem(RHS.IntVal); break;
812 case Instruction::And: GV.IntVal = LHS.IntVal & RHS.IntVal; break;
813 case Instruction::Or: GV.IntVal = LHS.IntVal | RHS.IntVal; break;
814 case Instruction::Xor: GV.IntVal = LHS.IntVal ^ RHS.IntVal; break;
821 GV.FloatVal = LHS.FloatVal + RHS.FloatVal; break;
823 GV.FloatVal = LHS.FloatVal - RHS.FloatVal; break;
825 GV.FloatVal = LHS.FloatVal * RHS.FloatVal; break;
827 GV.FloatVal = LHS.FloatVal / RHS.FloatVal; break;
829 GV.FloatVal = std::fmod(LHS.FloatVal,RHS.FloatVal); break;
836 GV.DoubleVal = LHS.DoubleVal + RHS.DoubleVal; break;
838 GV.DoubleVal = LHS.DoubleVal - RHS.DoubleVal; break;
840 GV.DoubleVal = LHS.DoubleVal * RHS.DoubleVal; break;
842 GV.DoubleVal = LHS.DoubleVal / RHS.DoubleVal; break;
844 GV.DoubleVal = std::fmod(LHS.DoubleVal,RHS.DoubleVal); break;
856 GV.IntVal = apfLHS.bitcastToAPInt();
861 GV.IntVal = apfLHS.bitcastToAPInt();
866 GV.IntVal = apfLHS.bitcastToAPInt();
871 GV.IntVal = apfLHS.bitcastToAPInt();
875 GV.IntVal = apfLHS.bitcastToAPInt();
881 return GV;
924 else if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(C))
925 Result = PTOGV(getOrEmitGlobalVariable(const_cast<GlobalVariable*>(GV)));
1223 for (const auto &GV : M->globals()) {
1224 if (GV.hasLocalLinkage() || GV.isDeclaration() ||
1225 GV.hasAppendingLinkage() || !GV.hasName())
1229 std::string(GV.getName()), GV.getType())];
1234 GVEntry = &GV;
1244 if (GV.hasExternalLinkage() || GVEntry->hasExternalWeakLinkage())
1245 GVEntry = &GV;
1252 for (const auto &GV : M->globals()) {
1256 std::string(GV.getName()), GV.getType())]) {
1258 if (GVEntry != &GV) {
1259 NonCanonicalGlobals.push_back(&GV);
1265 if (!GV.isDeclaration()) {
1266 addGlobalMapping(&GV, getMemoryForGV(&GV));
1271 std::string(GV.getName())))
1272 addGlobalMapping(&GV, SymAddr);
1275 +GV.getName());
1283 for (const GlobalValue *GV : NonCanonicalGlobals) {
1285 std::string(GV->getName()), GV->getType())];
1288 addGlobalMapping(GV, Ptr);
1294 for (const auto &GV : M->globals()) {
1295 if (!GV.isDeclaration()) {
1298 std::string(GV.getName()), GV.getType())])
1299 if (GVEntry != &GV) // Not the canonical variable.
1302 emitGlobalVariable(&GV);
1311 void ExecutionEngine::emitGlobalVariable(const GlobalVariable *GV) {
1312 void *GA = getPointerToGlobalIfAvailable(GV);
1316 GA = getMemoryForGV(GV);
1321 addGlobalMapping(GV, GA);
1325 if (!GV->isThreadLocal())
1326 InitializeMemory(GV->getInitializer(), GA);
1328 Type *ElTy = GV->getValueType();