| //===-- Regions.def - Metadata about MemRegion kinds ------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // The list of regions (MemRegion sub-classes) used in the Static Analyzer. |
| // In order to use this information, users of this file must define one or more |
| // of the three macros: |
| // |
| // REGION(Id, Parent) - for specific MemRegion sub-classes, reserving |
| // enum value IdKind for their kind. |
| // |
| // ABSTRACT_REGION(Id, Parent) - for abstract region classes, |
| // |
| // REGION_RANGE(Id, First, Last) - for ranges of kind-enums, |
| // allowing to determine abstract class of a region |
| // based on the kind-enum value. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef REGION |
| #define REGION(Id, Parent) |
| #endif |
| |
| #ifndef ABSTRACT_REGION |
| #define ABSTRACT_REGION(Id, Parent) |
| #endif |
| |
| #ifndef REGION_RANGE |
| #define REGION_RANGE(Id, First, Last) |
| #endif |
| |
| ABSTRACT_REGION(MemSpaceRegion, MemRegion) |
| REGION(CodeSpaceRegion, MemSpaceRegion) |
| ABSTRACT_REGION(GlobalsSpaceRegion, MemSpaceRegion) |
| ABSTRACT_REGION(NonStaticGlobalSpaceRegion, GlobalsSpaceRegion) |
| REGION(GlobalImmutableSpaceRegion, NonStaticGlobalSpaceRegion) |
| REGION(GlobalInternalSpaceRegion, NonStaticGlobalSpaceRegion) |
| REGION(GlobalSystemSpaceRegion, NonStaticGlobalSpaceRegion) |
| REGION_RANGE(NON_STATIC_GLOBAL_MEMSPACES, GlobalImmutableSpaceRegionKind, |
| GlobalSystemSpaceRegionKind) |
| REGION(StaticGlobalSpaceRegion, MemSpaceRegion) |
| REGION_RANGE(GLOBAL_MEMSPACES, GlobalImmutableSpaceRegionKind, |
| StaticGlobalSpaceRegionKind) |
| REGION(HeapSpaceRegion, MemSpaceRegion) |
| ABSTRACT_REGION(StackSpaceRegion, MemSpaceRegion) |
| REGION(StackArgumentsSpaceRegion, StackSpaceRegion) |
| REGION(StackLocalsSpaceRegion, StackSpaceRegion) |
| REGION_RANGE(STACK_MEMSPACES, StackArgumentsSpaceRegionKind, |
| StackLocalsSpaceRegionKind) |
| REGION(UnknownSpaceRegion, MemSpaceRegion) |
| REGION_RANGE(MEMSPACES, CodeSpaceRegionKind, |
| UnknownSpaceRegionKind) |
| ABSTRACT_REGION(SubRegion, MemRegion) |
| REGION(AllocaRegion, SubRegion) |
| REGION(SymbolicRegion, SubRegion) |
| ABSTRACT_REGION(TypedRegion, SubRegion) |
| REGION(BlockDataRegion, TypedRegion) |
| ABSTRACT_REGION(CodeTextRegion, TypedRegion) |
| REGION(BlockCodeRegion, CodeTextRegion) |
| REGION(FunctionCodeRegion, CodeTextRegion) |
| REGION_RANGE(CODE_TEXT_REGIONS, BlockCodeRegionKind, |
| FunctionCodeRegionKind) |
| ABSTRACT_REGION(TypedValueRegion, TypedRegion) |
| REGION(CompoundLiteralRegion, TypedValueRegion) |
| REGION(CXXBaseObjectRegion, TypedValueRegion) |
| REGION(CXXDerivedObjectRegion, TypedValueRegion) |
| REGION(CXXTempObjectRegion, TypedValueRegion) |
| REGION(CXXThisRegion, TypedValueRegion) |
| ABSTRACT_REGION(DeclRegion, TypedValueRegion) |
| REGION(FieldRegion, DeclRegion) |
| REGION(ObjCIvarRegion, DeclRegion) |
| REGION(VarRegion, DeclRegion) |
| REGION_RANGE(DECL_REGIONS, FieldRegionKind, |
| VarRegionKind) |
| REGION(ElementRegion, TypedValueRegion) |
| REGION(ObjCStringRegion, TypedValueRegion) |
| REGION(StringRegion, TypedValueRegion) |
| REGION_RANGE(TYPED_VALUE_REGIONS, CompoundLiteralRegionKind, |
| StringRegionKind) |
| REGION_RANGE(TYPED_REGIONS, BlockDataRegionKind, |
| StringRegionKind) |
| |
| #undef REGION_RANGE |
| #undef ABSTRACT_REGION |
| #undef REGION |