Lines Matching defs:Shadow
20 /// byte of application memory is backed by two bytes of shadow memory which
32 /// | shadow memory |
37 /// To derive a shadow memory address from an application memory address,
40 /// account for the double byte representation of shadow labels and move the
41 /// address into the shadow memory range. See the function
72 // the shadow load to have alignment 16. This flag is disabled by default as
80 // The ABI list file controls how shadow parameters are passed. The pass treats
206 /// pass the return value shadow in a register, while WK_Custom uses an
207 /// extra pointer argument to return the shadow. This allows the wrapped
288 void setShadow(Instruction *I, Value *Shadow);
292 void storeShadow(Value *Addr, uint64_t Size, uint64_t Align, Value *Shadow,
754 // We will not necessarily be able to compute the shadow for every phi node
825 Value *&Shadow = ValShadowMap[V];
826 if (!Shadow) {
837 Shadow = IRB.CreateLoad(getArgTLS(A->getArgNo(), ArgTLSPos));
845 Shadow = i;
846 assert(Shadow->getType() == DFS.ShadowTy);
850 NonZeroChecks.insert(Shadow);
852 Shadow = DFS.ZeroShadow;
855 return Shadow;
858 void DFSanFunction::setShadow(Instruction *I, Value *Shadow) {
860 assert(Shadow->getType() == DFS.ShadowTy);
861 ValShadowMap[I] = Shadow;
909 Value *Shadow = getShadow(Inst->getOperand(0));
911 Shadow = DFS.combineShadows(Shadow, getShadow(Inst->getOperand(i)), Inst);
913 return Shadow;
921 // Generates IR to load shadow corresponding to bytes [Addr, Addr+Size), where
970 // Fast path for the common case where each byte has identical shadow: load
971 // shadow 64 bits at a time, fall out to a __dfsan_union_load call if any
972 // shadow is non-equal.
1013 PHINode *Shadow = PHINode::Create(DFS.ShadowTy, 2, "", &Tail->front());
1014 Shadow->addIncoming(FallbackCall, FallbackBB);
1015 Shadow->addIncoming(TruncShadow, LastBr->getParent());
1016 return Shadow;
1037 Value *Shadow = DFSF.loadShadow(LI.getPointerOperand(), Size, Align, &LI);
1040 Shadow = DFSF.DFS.combineShadows(Shadow, PtrShadow, &LI);
1042 if (Shadow != DFSF.DFS.ZeroShadow)
1043 DFSF.NonZeroChecks.insert(Shadow);
1045 DFSF.setShadow(&LI, Shadow);
1049 Value *Shadow, Instruction *Pos) {
1055 IRB.CreateStore(Shadow, i->second);
1063 if (Shadow == DFS.ZeroShadow) {
1079 ShadowVec, Shadow, ConstantInt::get(Type::getInt32Ty(*DFS.Ctx), i));
1093 IRB.CreateAlignedStore(Shadow, CurShadowAddr, ShadowAlign);
1111 Value* Shadow = DFSF.getShadow(SI.getValueOperand());
1114 Shadow = DFSF.DFS.combineShadows(Shadow, PtrShadow, &SI);
1116 DFSF.storeShadow(SI.getPointerOperand(), Size, Align, Shadow, &SI);
1449 // Give the shadow phi node valid predecessors to fool SplitEdge into working.