Home | History | Annotate | Download | only in Instrumentation

Lines Matching defs:Origin

47 ///                           Origin tracking.
56 /// "select" instructions that pick the origin of a dirty argument, if an
59 /// Every 4 aligned, consecutive bytes of application memory have one origin
66 /// avoids storing origin to memory when a fully initialized value is stored.
67 /// This way it avoids needless overwritting origin of the 4-byte region on
138 static cl::opt<bool> ClStoreCleanOrigin("msan-store-clean-origin",
139 cl::desc("store origin for clean (fully initialized) values"),
194 /// \brief Thread-local origin storage for function parameters.
198 /// \brief Thread-local origin storage for function return value.
206 /// \brief Thread-local space used to pass origin value to the UMR reporting
212 /// \brief Run-time helper that copies origin info for a memory range.
214 /// \brief Run-time helper that generates a new origin value for a stack
225 /// \brief Offset of the origin shadow from the "normal" shadow.
230 /// \brief Branch weights for origin store.
416 /// instructions store and load corresponding shadow and origin
434 Instruction *Origin;
437 : Shadow(S), Origin(O), OrigIns(I) { }
438 ShadowOriginAndInsertPoint() : Shadow(0), Origin(0), OrigIns(0) { }
521 Instruction *Origin = InstrumentationList[i].Origin;
522 IRB.CreateStore(Origin ? (Value*)Origin : (Value*)IRB.getInt32(0),
636 /// \brief Compute the origin address that corresponds to a given application
663 /// \brief Compute the origin address for a given function argument.
680 /// \brief Compute the origin address for a retval.
682 // We keep a single origin for the entire retval. Might be too optimistic.
692 /// \brief Set Origin to be the origin value for V.
693 void setOrigin(Value *V, Value *Origin) {
695 assert(!OriginMap.count(V) && "Values may only have one origin");
696 DEBUG(dbgs() << "ORIGIN: " << *V << " ==> " << *Origin << "\n");
697 OriginMap[V] = Origin;
731 /// \brief Create a clean (zero) origin.
816 /// \brief Get the origin for a value.
820 Value *Origin = OriginMap[V];
821 if (!Origin) {
822 DEBUG(dbgs() << "NO ORIGIN: " << *V << "\n");
823 Origin = getCleanOrigin();
825 return Origin;
830 /// \brief Get the origin for i-th argument of the instruction I.
849 Instruction *Origin = dyn_cast_or_null<Instruction>(getOrigin(Val));
851 ShadowOriginAndInsertPoint(Shadow, Origin, OrigIns));
858 /// Loads the corresponding shadow and (optionally) origin.
889 /// Stores the corresponding shadow and (optionally) origin.
1015 /// \brief Default propagation of shadow and/or origin.
1025 /// This class also implements the general case of origin propagation. For a
1026 /// Nary operation, result origin is set to the origin of an argument that is
1033 Value *Origin;
1039 Shadow(0), Origin(0), IRB(IRB), MSV(MSV) {}
1041 /// \brief Add a pair of shadow and origin values to the mix.
1055 if (!Origin) {
1056 Origin = OpOrigin;
1061 Origin = IRB.CreateSelect(Cond, OpOrigin, Origin);
1075 /// and origin.
1083 assert(Origin);
1084 MSV->setOrigin(I, Origin);
1092 /// \brief Propagate origin for arbitrary operation.