Lines Matching defs:ICV

314     /// The name of the ICV.
317 /// Environment variable associated with this ICV.
326 /// Setter RTL function associated with this ICV.
329 /// Getter RTL function associated with this ICV.
332 /// RTL Function corresponding to the override clause of this ICV
445 /// Map from ICV kind to the ICV description.
455 auto &ICV = ICVs[_Name]; \
456 ICV.Setter = RTL; \
460 auto &ICV = ICVs[Name]; \
461 ICV.Getter = RTL; \
465 auto &ICV = ICVs[Enum]; \
466 ICV.Name = _Name; \
467 ICV.Kind = Enum; \
468 ICV.InitKind = Init; \
469 ICV.EnvVarName = _EnvVarName; \
470 switch (ICV.InitKind) { \
472 ICV.InitValue = nullptr; \
475 ICV.InitValue = ConstantInt::get( \
479 ICV.InitValue = ConstantInt::getFalse(OMPBuilder.Int1->getContext()); \
1002 /// Print initial ICV values for testing.
1009 for (auto ICV : ICVs) {
1010 auto ICVInfo = OMPInfoCache.ICVs[ICV];
1012 return ORA << "OpenMP ICV " << ore::NV("OpenMPICV", ICVInfo.Name)
1366 // TODO: ICV tracking to detect compatibility.
2248 /// Abstract Attribute for tracking ICV values.
2262 /// Return the value with which \p I can be replaced for specific \p ICV.
2263 virtual std::optional<Value *> getReplacementValue(InternalControlVar ICV,
2269 /// Return an assumed unique ICV value if a single candidate is found. If
2273 getUniqueReplacementValue(InternalControlVar ICV) const = 0;
2310 // Map of ICV to their values at specific program point.
2322 for (InternalControlVar ICV : TrackableICVs) {
2323 auto &SetterRFI = OMPInfoCache.RFIs[OMPInfoCache.ICVs[ICV].Setter];
2325 auto &ValuesMap = ICVReplacementValuesMap[ICV];
2340 std::optional<Value *> ReplVal = getValueForCall(A, I, ICV);
2347 // Track all changes of an ICV.
2368 InternalControlVar &ICV) const {
2376 auto &GetterRFI = OMPInfoCache.RFIs[OMPInfoCache.ICVs[ICV].Getter];
2377 auto &SetterRFI = OMPInfoCache.RFIs[OMPInfoCache.ICVs[ICV].Setter];
2380 // Indirect call, assume ICV changes.
2386 if (ICVReplacementValuesMap[ICV].count(&I))
2387 return ICVReplacementValuesMap[ICV].lookup(&I);
2392 // Since we don't know, assume it changes the ICV.
2401 ICVTrackingAA->getUniqueReplacementValue(ICV);
2413 getUniqueReplacementValue(InternalControlVar ICV) const override {
2417 /// Return the value with which \p I can be replaced for specific \p ICV.
2418 std::optional<Value *> getReplacementValue(InternalControlVar ICV,
2421 const auto &ValuesMap = ICVReplacementValuesMap[ICV];
2439 // ICV.
2457 std::optional<Value *> NewReplVal = getValueForCall(A, *CurrInst, ICV);
2504 // Map of ICV to their values at specific program point.
2509 /// Return the value with which \p I can be replaced for specific \p ICV.
2511 getUniqueReplacementValue(InternalControlVar ICV) const override {
2512 return ICVReplacementValuesMap[ICV];
2523 for (InternalControlVar ICV : TrackableICVs) {
2524 std::optional<Value *> &ReplVal = ICVReplacementValuesMap[ICV];
2529 ICVTrackingAA->getReplacementValue(ICV, &I, A);
2531 // If we found a second ICV value there is no unique returned value.
2564 // We only initialize this AA for getters, so we need to know which ICV it
2567 for (InternalControlVar ICV : TrackableICVs) {
2568 auto ICVInfo = OMPInfoCache.ICVs[ICV];
2576 /// Unknown ICV.
2605 // We don't have any information, so we assume it changes the ICV.
2620 // \p ICV.
2622 getUniqueReplacementValue(InternalControlVar ICV) const override {
2644 // Map of ICV to their values at specific program point.
2650 /// \p ICV.
2652 getUniqueReplacementValue(InternalControlVar ICV) const override {
2653 return ICVReplacementValuesMap[ICV];
2662 // We don't have any information, so we assume it changes the ICV.
2666 for (InternalControlVar ICV : TrackableICVs) {
2667 std::optional<Value *> &ReplVal = ICVReplacementValuesMap[ICV];
2669 ICVTrackingAA->getUniqueReplacementValue(ICV);