diff --git a/.github/workflows/llvm-win.yml b/.github/workflows/llvm-win.yml
index 210579e2..e6b97ca0 100644
--- a/.github/workflows/llvm-win.yml
+++ b/.github/workflows/llvm-win.yml
@@ -8,28 +8,21 @@ jobs:
strategy:
fail-fast: false
matrix:
- config:
- - { os: windows-2022, platform: x64, configuration : Debug, vs: "Program Files/Microsoft Visual Studio/2022" }
- - { os: windows-2022, platform: x64, configuration : RelWithDebInfo, vs: "Program Files/Microsoft Visual Studio/2022" }
+ os: [windows-2022]
+ platform: [x64]
+ build-cfg: [Debug, DebugOpt, Release]
- runs-on: ${{ matrix.config.os }}
+ runs-on: ${{ matrix.os }}
env:
- CC: ${{ matrix.config.cc }}
- CXX: ${{ matrix.config.cxx }}
- VS_VERSION: ${{ matrix.config.vs }}
- PLATFORM: ${{ matrix.config.platform }}
- CONFIGURATION: ${{ matrix.config.configuration }}
+ VS_VERSION: "Program Files/Microsoft Visual Studio/2022"
+ PLATFORM: ${{ matrix.platform }}
+ BUILD_CONFIGURATION: ${{ matrix.build-cfg }}
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
steps:
- - name: Inject slug/short variables
- uses: rlespinasse/github-slug-action@v4
-
- name: Check out
- shell: cmd
- run: |
- git clone -b ${{ env.GITHUB_REF_SLUG }} https://github.com/mono/CppSharp.git C:\CppSharp
+ uses: actions/checkout@v4
- uses: lukka/get-cmake@latest
@@ -48,20 +41,17 @@ jobs:
- name: Clone LLVM
shell: bash
run: build/build.sh clone_llvm
- working-directory: C:\CppSharp
- name: Build LLVM
shell: bash
- run: build/build.sh build_llvm -platform $PLATFORM -configuration $CONFIGURATION
- working-directory: C:\CppSharp
+ run: build/build.sh build_llvm -platform $PLATFORM -configuration $BUILD_CONFIGURATION
- name: Package LLVM
shell: bash
- run: build/build.sh package_llvm -platform $PLATFORM -configuration $CONFIGURATION
- working-directory: C:\CppSharp
+ run: build/build.sh package_llvm -platform $PLATFORM -configuration $BUILD_CONFIGURATION
- name: 'Upload Artifact'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: llvm
- path: C:\CppSharp\build\llvm\llvm-*-*.*
+ name: llvm-${{ matrix.os }}-${{ matrix.platform }}-${{ matrix.build-cfg }}
+ path: build/llvm/llvm-*-*.*
diff --git a/.github/workflows/llvm.yml b/.github/workflows/llvm.yml
index 966cc169..e8915190 100644
--- a/.github/workflows/llvm.yml
+++ b/.github/workflows/llvm.yml
@@ -8,19 +8,17 @@ jobs:
strategy:
fail-fast: false
matrix:
- config:
- - { os: ubuntu-22.04, platform: x64, cxx: g++-11, cc: gcc-11 }
- - { os: ubuntu-22.04, platform: arm64, cxx: g++-11, cc: gcc-11 }
- - { os: macos-11, platform: x64, cxx: clang++, cc: clang }
- - { os: macos-12, platform: x64, cxx: clang++, cc: clang }
- - { os: macos-12, platform: arm64, cxx: clang++, cc: clang }
+ os: [ubuntu-22.04, macos-13]
+ platform: [x64, arm64]
+ build-cfg: [Debug, DebugOpt, Release]
- runs-on: ${{ matrix.config.os }}
+ runs-on: ${{ matrix.os }}
env:
- CC: ${{ matrix.config.cc }}
- CXX: ${{ matrix.config.cxx }}
- PLATFORM: ${{ matrix.config.platform }}
+ CC: ${{ startsWith(matrix.os, 'ubuntu') && 'gcc-11' || 'clang' }}
+ CXX: ${{ startsWith(matrix.os, 'ubuntu') && 'g++-11' || 'clang++' }}
+ PLATFORM: ${{ matrix.platform }}
+ BUILD_CONFIGURATION: ${{ matrix.build-cfg }}
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
steps:
@@ -28,7 +26,7 @@ jobs:
- uses: lukka/get-cmake@latest
- name: Install cross compilers
- if: startsWith(matrix.config.os, 'ubuntu') && startsWith(matrix.config.platform, 'arm64')
+ if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.platform, 'arm64')
run: sudo apt install -y g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
- name: Clone LLVM
@@ -37,14 +35,15 @@ jobs:
- name: Build LLVM
shell: bash
- run: build/build.sh build_llvm -platform $PLATFORM
+ run: build/build.sh build_llvm -platform $PLATFORM -configuration $BUILD_CONFIGURATION
- name: Package LLVM
shell: bash
- run: build/build.sh package_llvm -platform $PLATFORM
+ run: build/build.sh package_llvm -platform $PLATFORM -configuration $BUILD_CONFIGURATION
- name: 'Upload Artifact'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: llvm
+ name: llvm-${{ matrix.os }}-${{ matrix.platform }}-${{ matrix.build-cfg }}
+ overwrite: true
path: build/llvm/llvm-*-*.*
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index b6944964..33827778 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,6 +1,6 @@
name: CI
-on: [push, pull_request]
+on: [push, pull_request, workflow_dispatch]
# Cancel any previous workflows if the pull request was updated
concurrency:
@@ -15,8 +15,7 @@ jobs:
matrix:
os: [ubuntu-22.04, windows-2022]
platform: [x64]
- build-cfg: [DebugOpt, Release]
- #build-cfg: [Debug, DebugOpt, Release] # our local copy of clang isn't build for debug on linux/macos currently
+ build-cfg: [Debug, DebugOpt, Release]
include:
- os: windows-2022
platform: x64
diff --git a/build/LLVM.lua b/build/LLVM.lua
index bf17b2f2..d68f0193 100644
--- a/build/LLVM.lua
+++ b/build/LLVM.lua
@@ -5,18 +5,21 @@ LLVMRootDir = builddir .. "/llvm/llvm-project"
local LLVMDirPerConfiguration = false
local LLVMRootDirDebug = ""
+local LLVMRootDirRelWithDebInfo = ""
local LLVMRootDirRelease = ""
require "llvm/LLVM"
function SearchLLVM()
LLVMRootDirDebug = builddir .. "/llvm/" .. get_llvm_package_name(nil, "Debug")
- LLVMRootDirRelease = builddir .. "/llvm/" .. get_llvm_package_name()
+ LLVMRootDirRelWithDebInfo = builddir .. "/llvm/" .. get_llvm_package_name(nil, "RelWithDebInfo")
+ LLVMRootDirRelease = builddir .. "/llvm/" .. get_llvm_package_name(nil, "Release")
- if os.isdir(LLVMRootDirDebug) or os.isdir(LLVMRootDirRelease) then
+ if os.isdir(LLVMRootDirDebug) or os.isdir(LLVMRootDirRelWithDebInfo) or os.isdir(LLVMRootDirRelease) then
LLVMDirPerConfiguration = true
- print("Using debug LLVM build: " .. LLVMRootDirDebug)
- print("Using release LLVM build: " .. LLVMRootDirRelease)
+ print("Using cached LLVM 'Debug' build: " .. LLVMRootDirDebug)
+ print("Using cached LLVM 'RelWithDebInfo' build: " .. LLVMRootDirRelWithDebInfo)
+ print("Using cached LLVM 'Release' build: " .. LLVMRootDirRelease)
elseif os.isdir(LLVMRootDir) then
print("Using LLVM build: " .. LLVMRootDir)
else
@@ -41,13 +44,13 @@ function SetupLLVMIncludes()
filter { "configurations:DebugOpt" }
includedirs
{
- path.join(LLVMRootDirRelease, "include"),
- path.join(LLVMRootDirRelease, "llvm/include"),
- path.join(LLVMRootDirRelease, "lld/include"),
- path.join(LLVMRootDirRelease, "clang/include"),
- path.join(LLVMRootDirRelease, "clang/lib"),
- path.join(LLVMRootDirRelease, "build/include"),
- path.join(LLVMRootDirRelease, "build/clang/include"),
+ path.join(LLVMRootDirRelWithDebInfo, "include"),
+ path.join(LLVMRootDirRelWithDebInfo, "llvm/include"),
+ path.join(LLVMRootDirRelWithDebInfo, "lld/include"),
+ path.join(LLVMRootDirRelWithDebInfo, "clang/include"),
+ path.join(LLVMRootDirRelWithDebInfo, "clang/lib"),
+ path.join(LLVMRootDirRelWithDebInfo, "build/include"),
+ path.join(LLVMRootDirRelWithDebInfo, "build/clang/include"),
}
filter { "configurations:Debug" }
@@ -95,12 +98,17 @@ function CopyClangIncludes()
if LLVMDirPerConfiguration then
local clangBuiltinDebug = path.join(LLVMRootDirDebug, "lib")
+ local clangBuiltinRelWithDebInfo = path.join(LLVMRootDirRelWithDebInfo, "lib")
local clangBuiltinRelease = path.join(LLVMRootDirRelease, "lib")
if os.isdir(path.join(clangBuiltinDebug, "clang")) then
clangBuiltinIncludeDir = clangBuiltinDebug
end
+ if os.isdir(path.join(clangBuiltinRelWithDebInfo, "clang")) then
+ clangBuiltinIncludeDir = clangBuiltinRelWithDebInfo
+ end
+
if os.isdir(path.join(clangBuiltinRelease, "clang")) then
clangBuiltinIncludeDir = clangBuiltinRelease
end
@@ -134,7 +142,7 @@ function SetupLLVMLibs()
if LLVMDirPerConfiguration then
filter { "configurations:DebugOpt" }
- libdirs { path.join(LLVMRootDirRelease, "build/lib") }
+ libdirs { path.join(LLVMRootDirRelWithDebInfo, "build/lib") }
filter { "configurations:Debug" }
libdirs { path.join(LLVMRootDirDebug, "build/lib") }
@@ -150,9 +158,6 @@ function SetupLLVMLibs()
filter { "configurations:Debug", "toolset:msc*" }
libdirs { path.join(LLVMBuildDir, "Debug/lib") }
-
- filter { "configurations:Release", "toolset:msc*" }
- libdirs { path.join(LLVMBuildDir, "RelWithDebInfo/lib") }
end
filter {}
diff --git a/build/llvm/LLVM.lua b/build/llvm/LLVM.lua
index 69447136..77560cec 100644
--- a/build/llvm/LLVM.lua
+++ b/build/llvm/LLVM.lua
@@ -49,6 +49,10 @@ function clone_llvm()
extract(archive, '.')
os.rename('llvm-project-'..llvm_release, llvm)
+
+ -- delete the extracted archive
+ print("Cleaning up downloaded artifacts...")
+ os.remove(archive)
end
function get_vs_version()
@@ -138,12 +142,12 @@ end
function get_llvm_configuration_name(debug)
if string.find(_OPTIONS["configuration"], "DebugOpt") then
- return os.istarget("windows") and "RelWithDebInfo" or "Release"
+ return "RelWithDebInfo"
end
if string.find(_OPTIONS["configuration"], "Debug") then
return "Debug"
end
- return os.istarget("windows") and "RelWithDebInfo" or "Release"
+ return "Release"
end
function get_7z_path()
@@ -219,6 +223,10 @@ function download_llvm()
else
extract_tar_xz(archive, pkg_name)
end
+
+ -- delete the extracted archive
+ print("Cleaning up downloaded artifacts...")
+ os.remove(archive)
end
function cmake(gen, conf, builddir, options)
@@ -511,6 +519,10 @@ function package_llvm(conf, llvm_base, llvm_build)
os.copydir(llvm_build_libdir, out .. "/build/lib", "*.a")
end
+ -- Copy natvis visualizers for a better debugging experience
+ os.copyfile(llvm_base .. "/clang/utils/ClangVisualizers/clang.natvis", out .. "/utils/clang.natvis")
+ os.copyfile(llvm_base .. "/llvm/utils/LLVMVisualizers/llvm.natvis", out .. "/utils/llvm.natvis")
+
os.copydir(llvm_base .. "/clang/include", out .. "/clang/include")
os.copydir(llvm_build .. "/tools/clang/include", out .. "/build/clang/include")
diff --git a/build/premake5.lua b/build/premake5.lua
index e00efd09..752f3027 100644
--- a/build/premake5.lua
+++ b/build/premake5.lua
@@ -44,7 +44,7 @@ workspace "CppSharp"
workspacefiles(path.join(builddir, "premake5.lua"))
workspacefiles(path.join(builddir, "*.sh"))
workspacefiles(path.join(rootdir, ".github/workflows/*.yml"))
- workspacefiles(path.join(rootdir, "*.natvis"))
+ workspacefiles(path.join(path.join(get_llvm_build_dir(), "/utils/"), "*.natvis"))
workspacefiles(path.join(testsdir, "Test*.props"))
group "Libraries"
diff --git a/clang.natvis b/clang.natvis
deleted file mode 100644
index a7c70186..00000000
--- a/clang.natvis
+++ /dev/null
@@ -1,1089 +0,0 @@
-
-
-
-
-
-
- LocInfoType
- {(clang::Type::TypeClass)TypeBits.TC, en}Type
-
- {*(clang::BuiltinType *)this}
- {*(clang::PointerType *)this}
- {*(clang::ParenType *)this}
- {(clang::BitIntType *)this}
- {*(clang::LValueReferenceType *)this}
- {*(clang::RValueReferenceType *)this}
- {(clang::ConstantArrayType *)this,na}
- {(clang::ConstantArrayType *)this,view(left)na}
- {(clang::ConstantArrayType *)this,view(right)na}
- {(clang::VariableArrayType *)this,na}
- {(clang::VariableArrayType *)this,view(left)na}
- {(clang::VariableArrayType *)this,view(right)na}
- {(clang::IncompleteArrayType *)this,na}
- {(clang::IncompleteArrayType *)this,view(left)na}
- {(clang::IncompleteArrayType *)this,view(right)na}
- {(clang::TypedefType *)this,na}
- {(clang::TypedefType *)this,view(cpp)na}
- {*(clang::AttributedType *)this}
- {(clang::DecayedType *)this,na}
- {(clang::DecayedType *)this,view(left)na}
- {(clang::DecayedType *)this,view(right)na}
- {(clang::ElaboratedType *)this,na}
- {(clang::ElaboratedType *)this,view(left)na}
- {(clang::ElaboratedType *)this,view(right)na}
- {*(clang::TemplateTypeParmType *)this}
- {*(clang::TemplateTypeParmType *)this,view(cpp)}
- {*(clang::SubstTemplateTypeParmType *)this}
- {*(clang::RecordType *)this}
- {*(clang::RecordType *)this,view(cpp)}
- {(clang::FunctionProtoType *)this,na}
- {(clang::FunctionProtoType *)this,view(left)na}
- {(clang::FunctionProtoType *)this,view(right)na}
- {*(clang::TemplateSpecializationType *)this}
- {*(clang::DeducedTemplateSpecializationType *)this}
- {*(clang::DeducedTemplateSpecializationType *)this,view(cpp)}
- {*(clang::InjectedClassNameType *)this}
- {*(clang::DependentNameType *)this}
- {*(clang::PackExpansionType *)this}
- {(clang::LocInfoType *)this,na}
- {(clang::LocInfoType *)this,view(cpp)na}
- {this,view(poly)na}
- {*this,view(cpp)}
-
- No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type
- Dependence{" ",en}
-
- CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en} CachedLocalOrUnnamed
- CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}{" ",sb}
-
- FromAST
-
-
- No TypeBits set beyond TypeClass
-
- {*this, view(Dependence)}{*this, view(Cache)}{*this, view(FromAST)}
- {*this,view(cmn)} {{{*this,view(poly)}}}
-
- - (clang::Type::TypeClass)TypeBits.TC
- - this,view(flags)na
- - CanonicalType
- *(clang::BuiltinType *)this
- *(clang::PointerType *)this
- *(clang::ParenType*)this
- *(clang::BitIntType*)this
- *(clang::LValueReferenceType *)this
- *(clang::RValueReferenceType *)this
- (clang::ConstantArrayType *)this
- (clang::VariableArrayType *)this
- (clang::IncompleteArrayType *)this
- *(clang::AttributedType *)this
- (clang::DecayedType *)this
- (clang::ElaboratedType *)this
- (clang::TemplateTypeParmType *)this
- (clang::SubstTemplateTypeParmType *)this
- (clang::RecordType *)this
- (clang::FunctionProtoType *)this
- (clang::TemplateSpecializationType *)this
- (clang::DeducedTemplateSpecializationType *)this
- (clang::InjectedClassNameType *)this
- (clang::DependentNameType *)this
- (clang::PackExpansionType *)this
- (clang::LocInfoType *)this
-
-
-
-
- - ElementType
-
-
-
- {ElementType,view(cpp)}
- [{Size}]
- {ElementType,view(cpp)}[{Size}]
-
- - Size
- (clang::ArrayType *)this
-
-
-
- {ElementType,view(cpp)}
- []
- {ElementType,view(cpp)}[]
-
- (clang::ArrayType *)this
-
-
-
- {ElementType,view(cpp)}
- [*]
- {ElementType,view(cpp)}[*]
-
- - (clang::Expr *)SizeExpr
- (clang::ArrayType *)this
-
-
-
- {Decl,view(name)nd}
- {Decl}
-
- - Decl
- *(clang::Type *)this, view(cmn)
-
-
-
- {PointeeType, view(cpp)} *
-
- - PointeeType
- *(clang::Type *)this, view(cmn)
-
-
-
- {Inner, view(cpp)}
-
- - Inner
- *(clang::Type *)this, view(cmn)
-
-
-
- signed _BitInt({NumBits})
- unsigned _BitInt({NumBits})(
-
- - NumBits
- (clang::Type *)this, view(cmn)
-
-
-
-
- {((clang::ReferenceType *)this)->PointeeType,view(cpp)} &
-
- *(clang::Type *)this, view(cmn)
- - PointeeType
-
-
-
- {((clang::ReferenceType *)this)->PointeeType,view(cpp)} &&
-
- *(clang::Type *)this, view(cmn)
- - PointeeType
-
-
-
- {ModifiedType} Attribute={(clang::AttributedType::Kind)AttributedTypeBits.AttrKind}
-
-
-
-
- {(clang::Decl::Kind)DeclContextBits.DeclKind,en}Decl
-
- - (clang::Decl::Kind)DeclContextBits.DeclKind,en
-
-
-
-
- FirstDecl
- (clang::Decl *)(*(intptr_t *)NextInContextAndBits.Value.Data & ~3)
- *this
-
-
-
-
-
-
- Field {{{*(clang::DeclaratorDecl *)this,view(cpp)nd}}}
-
-
- {*(clang::FunctionDecl *)this,nd}
- Method {{{*this,view(cpp)}}}
-
-
- Constructor {{{Name,view(cpp)}({*(clang::FunctionDecl *)this,view(parm0)nd})}}
-
-
- Destructor {{~{Name,view(cpp)}()}}
-
-
- typename
- class
- (not yet known if parameter pack)
- ...
-
- {(TypeSourceInfo *)(*(uintptr_t *)DefaultArgument.ValueOrInherited.Val.Value.Data&~3LL),view(cpp)}
- {{InheritedInitializer}}
- = {this,view(DefaultArg)na}
-
- {*this,view(TorC)} {*this,view(MaybeEllipses)}{Name,view(cpp)} {this,view(Initializer)na}
-
-
- {*TemplatedDecl,view(cpp)}
- template{TemplateParams,na} {*TemplatedDecl};
-
- - TemplateParams,na
- - TemplatedDecl,na
-
-
-
-
- {(clang::TypeSourceInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL),view(cpp)na}
- {(clang::TypedefNameDecl::ModedTInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL),view(cpp)na}
- {(TypeDecl *)this,view(cpp)nand}
- typedef {this,view(type)na} {this,view(name)na};
-
- - "Not yet calculated",sb
- - (bool)(*(uintptr_t *)MaybeModedTInfo.Value.Data & 2)
- - (clang::TypeSourceInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL)
- - (clang::TypedefNameDecl::ModedTInfo *)(*(uintptr_t *)MaybeModedTInfo.Value.Data & ~7LL)
- (TypeDecl *)this,nd
-
-
-
- {(TypedefNameDecl *)this,view(name)nand}
- using {(TypedefNameDecl *)this,view(name)nand} = {(TypedefNameDecl *)this,view(type)nand}
-
-
- {Name}
-
-
- Kind={(UncommonTemplateNameStorage::Kind)Kind,en}, Size={Size}
-
- - (UncommonTemplateNameStorage::Kind)Kind
- - Size
-
-
-
- {Bits},
- {this,view(cmn)na},{(OverloadedTemplateStorage*)this,na}
- {this,view(cmn)na},{(AssumedTemplateStorage*)this,na}
- {this,view(cmn)na},{(SubstTemplateTemplateParmStorage*)this,na}
- {this,view(cmn)na},{(SubstTemplateTemplateParmPackStorage*)this,na}
- {this,view(cmn)na}
-
- - Bits
- (OverloadedTemplateStorage*)this
- (AssumedTemplateStorage*)this
- (SubstTemplateTemplateParmStorage*)this
- (SubstTemplateTemplateParmPackStorage*)this
-
-
-
-
-
-
- {(clang::TemplateDecl *)(Val.Value & ~3LL),view(cpp)na}
-
-
- {(clang::TemplateDecl *)(Val.Value & ~3LL),na}
-
-
- {(clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL),view(cpp)na}
-
-
- {(clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL),na}
-
-
- {(clang::QualifiedTemplateName *)(Val.Value & ~3LL),view(cpp)na}
-
-
- {(clang::QualifiedTemplateName *)(Val.Value & ~3LL),na}
-
-
- {(clang::DependentTemplateName *)(Val.Value & ~3LL),view(cpp)na}
-
-
- {(clang::DependentTemplateName *)(Val.Value & ~3LL),na}
-
-
- - "TemplateDecl",s8b
- -
- (clang::TemplateDecl *)(Val.Value & ~3LL)
-
- - "UncommonTemplateNameStorage",s8b
- -
- (clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL)
-
- - "QualifiedTemplateName",s8b
- -
- (clang::QualifiedTemplateName *)(Val.Value & ~3LL)
-
- - "DependentTemplateName",s8b
- -
- (clang::DependentTemplateName *)(Val.Value & ~3LL)
-
- - Val
-
-
-
-
- {Storage,view(cpp)na}
- {Storage,na}
-
- Storage
-
-
-
- {Name,view(cpp)}
- {Name}
-
-
- implicit{" ",sb}
-
- {*this,view(implicit)nd}
- {*this,view(modifiers)}{Name,view(cpp)}
- {*this,view(modifiers)nd}struct {Name,view(cpp)}
- {*this,view(modifiers)nd}interface {Name,view(cpp)}
- {*this,view(modifiers)nd}union {Name,view(cpp)}
- {*this,view(modifiers)nd}class {Name,view(cpp)}
- {*this,view(modifiers)nd}enum {Name,view(cpp)}
-
- (clang::DeclContext *)this
-
-
-
- {decl,view(cpp)na}
- {*decl}
-
- *(clang::Type *)this, view(cmn)
- - decl
-
-
-
- {(clang::TagType *)this,view(cpp)na}
- {(clang::TagType *)this,na}
-
- - *(clang::TagType *)this
-
-
-
- {{{*Replaced,view(cpp)} <= {CanonicalType,view(cpp)}}}
-
- *(clang::Type *)this, view(cmn)
- - *Replaced
-
-
-
-
-
- {ResultType,view(cpp)}
-
- {*(clang::QualType *)(this+1),view(cpp)}{*this,view(parm1)}
-
- , {*((clang::QualType *)(this+1)+1),view(cpp)}{*this,view(parm2)}
-
- , {*((clang::QualType *)(this+1)+2),view(cpp)}{*this,view(parm3)}
-
- , {*((clang::QualType *)(this+1)+3),view(cpp)}{*this,view(parm4)}
-
- , {*((clang::QualType *)(this+1)+4),view(cpp)}{*this,view(parm5)}
-
- , /* expand for more params */
- ({*this,view(parm0)}) -> {ResultType,view(cpp)}
- ({*this,view(parm0)})
- {this,view(left)na}{this,view(right)na}
-
- - ResultType
-
- {*this,view(parm0)}
-
-
- FunctionTypeBits.NumParams
- (clang::QualType *)(this+1)
-
-
-
- *(clang::Type *)this, view(cmn)
-
-
-
-
- {OriginalTy} adjusted to {AdjustedTy}
-
- - OriginalTy
- - AdjustedTy
-
-
-
- {OriginalTy,view(left)}
- {OriginalTy,view(right)}
- {OriginalTy}
-
- (clang::AdjustedType *)this
-
-
-
- {NamedType,view(left)}
- {NamedType,view(right)}
- {NamedType}
-
- - (clang::ElaboratedTypeKeyword)TypeWithKeywordBits.Keyword
- - NNS
- - NamedType,view(cmn)
-
-
-
- {TTPDecl->Name,view(cpp)}
- Non-canonical: {*TTPDecl}
- Canonical: {CanTTPTInfo}
-
- *(clang::Type *)this, view(cmn)
-
-
-
- {Decl,view(cpp)}
-
- - Decl
- - InjectedType
- *(clang::Type *)this, view(cmn)
-
-
-
- {NNS}{Name,view(cpp)na}
-
- - NNS
- - Name
- *(clang::Type *)this, view(cmn)
-
-
-
-
- {(IdentifierInfo*)Specifier,view(cpp)na}::
- {(NamedDecl*)Specifier,view(cpp)na}::
- {(Type*)Specifier,view(cpp)na}::
-
- - (NestedNameSpecifier::StoredSpecifierKind)((*(uintptr_t *)Prefix.Value.Data>>1)&3)
-
-
-
- {Pattern}
-
- - Pattern
- - NumExpansions
- *(clang::Type *)this, view(cmn)
-
-
-
- {((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(poly)}{*this,view(fastQuals)}
- {((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(cpp)}{*this,view(fastQuals)}
- {((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(left)}{*this,view(fastQuals)}
- {((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,view(right)}{*this,view(fastQuals)}
-
-
- {" ",sb}const
- {" ",sb}restrict
- {" ",sb}const restrict
- {" ",sb}volatile
- {" ",sb}const volatile
- {" ",sb}volatile restrict
- {" ",sb}const volatile restrict
- Cannot visualize non-fast qualifiers
- Null
- {((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType,na}{*this,view(fastQuals)}
-
- - *this,view(fastQuals)
- ((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)Value.Value.Data) & ~(uintptr_t)((1U << clang::TypeAlignmentInBits) - 1U)))->BaseType
-
-
-
-
- {DeclInfo,view(cpp)na}
- {DeclInfo,na}
-
- - DeclInfo
- *(clang::Type *)this, view(cmn)
-
-
-
- {Ty,view(cpp)}
- {Ty}
-
- Ty
-
-
-
- {(QualType *)&Ty,na}
-
- - (QualType *)&Ty
- - Data
-
-
-
- Not building anything
- Building a {LastTy}
-
-
- {Argument,view(cpp)}
- {Argument}
-
-
- {*(clang::QualType *)&TypeOrValue.V,view(cpp)}
- {(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en} template argument: {*(clang::QualType *)&TypeOrValue.V}
-
- {Args.Args[0]}{*this,view(arg1)}
-
- , {Args.Args[1]}{*this,view(arg2)}
-
- , {Args.Args[2]}, ...
-
- {Args.Args[0],view(cpp)}{*this,view(arg1cpp)}
-
- , {Args.Args[1],view(cpp)}{*this,view(arg2cpp)}
-
- , {Args.Args[2],view(cpp)}, ...
- {*this,view(arg0cpp)}
- {*this,view(arg0)}
- {(clang::Expr *)TypeOrValue.V,view(cpp)na}
- {(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en}
-
- - *(clang::QualType *)&TypeOrValue.V
- - (clang::Expr *)TypeOrValue.V
-
- Args.NumArgs
- Args.Args
-
-
-
-
-
-
- {((TemplateArgumentLoc*)Arguments.BeginX)[0],view(cpp)}{*this,view(elt1)}
-
- , {((TemplateArgumentLoc*)Arguments.BeginX)[1],view(cpp)}{*this,view(elt2)}
-
- , {((TemplateArgumentLoc*)Arguments.BeginX)[2],view(cpp)}{*this,view(elt3)}
-
- , {((TemplateArgumentLoc*)Arguments.BeginX)[3],view(cpp)}{*this,view(elt4)}
-
- , ...
- empty
- <{*this,view(elt0)}>
- Uninitialized
-
-
-
- {Arguments[0],view(cpp)}{*this,view(arg1)}
-
- , {Arguments[1],view(cpp)}{*this,view(arg2)}
-
- , {Arguments[1],view(cpp)}, ...
- <{*this,view(arg0)}>
-
- - NumArguments
-
- NumArguments
- Arguments
-
-
-
-
-
- {Data[0],view(cpp)}{*this,view(arg1)}
-
- , {Data[1],view(cpp)}{*this,view(arg2)}
-
- , {Data[2],view(cpp)}, ...
- <{*this,view(arg0)}>
-
- - Length
-
-
-
- Length
- Data
-
-
-
-
-
-
-
- {((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[0],view(cpp)}{*this,view(level1)}
-
- ::{((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[1],view(cpp)}{*this,view(level2)}
-
- ::{((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[2],view(cpp)}, ...
- {*this,view(level0)}
-
- - TemplateArgumentLists
-
-
-
- {(clang::QualType *)Arg,view(cpp)na}
- Type template argument: {*(clang::QualType *)Arg}
- Non-type template argument: {*(clang::Expr *)Arg}
- Template template argument: {*(clang::TemplateName *)Arg
-
- - Kind,en
- - (clang::QualType *)Arg
- - (clang::Expr *)Arg
- - (clang::TemplateName *)Arg
-
-
-
-
- void
- bool
- char
- unsigned char
- wchar_t
- char16_t
- char32_t
- unsigned short
- unsigned int
- unsigned long
- unsigned long long
- __uint128_t
- char
- signed char
- wchar_t
- short
- int
- long
- long long
- __int128_t
- __fp16
- float
- double
- long double
- nullptr_t
- {(clang::BuiltinType::Kind)BuiltinTypeBits.Kind, en}
-
- - (clang::BuiltinType::Kind)BuiltinTypeBits.Kind
-
-
-
-
-
- {((clang::TemplateArgument *)(this+1))[0],view(cpp)}{*this,view(arg1)}
-
- , {((clang::TemplateArgument *)(this+1))[1],view(cpp)}{*this,view(arg2)}
-
- , {((clang::TemplateArgument *)(this+1))[2],view(cpp)}{*this,view(arg3)}
-
- {*((clang::TemplateDecl *)(Template.Storage.Val.Value))->TemplatedDecl,view(cpp)}<{*this,view(arg0)}>
-
- Can't visualize this TemplateSpecializationType
-
- - Template.Storage
-
- TemplateSpecializationTypeBits.NumArgs
- (clang::TemplateArgument *)(this+1)
-
- *(clang::Type *)this, view(cmn)
-
-
-
-
- - (CanonicalType.Value.Value != this) || TypeBits.Dependent
- *(clang::Type *)this,view(cmn)
-
-
-
- {CanonicalType,view(cpp)}
- {Template,view(cpp)}
- {Template}
-
- - Template
- - CanonicalType,view(cpp)
- (clang::DeducedType *)this
- - Template
-
-
-
- {*(CXXRecordDecl *)this,nd}{*TemplateArgs}
-
- (CXXRecordDecl *)this,nd
- - TemplateArgs
-
-
-
- {((llvm::StringMapEntry<clang::IdentifierInfo *>*)Entry)+1,sb}
-
- - ((llvm::StringMapEntry<clang::IdentifierInfo *>*)Entry)+1,s
- - (clang::tok::TokenKind)TokenID
-
-
-
-
- Empty
- {*(clang::IdentifierInfo *)(Ptr & ~PtrMask)}
- {{Identifier ({*(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}
- {{ObjC Zero Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}
- {{ObjC One Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}
- {(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),view(cpp)na}
- C++ Constructor {{{(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),view(cpp)na}}}
- C++ Destructor {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}}
- C++ Conversion function {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}}
- C++ Operator {{*(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask)}}
- {*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask),view(cpp)}
- {{Extra ({*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask)})}}
-
- - StoredNameKind(Ptr & PtrMask),en
- - *(clang::IdentifierInfo *)(Ptr & ~PtrMask),na
- - *(clang::IdentifierInfo *)(Ptr & ~PtrMask),na
- - *(clang::IdentifierInfo *)(Ptr & ~PtrMask),na
- - *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na
- - *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na
- - *(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na
- - *(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask),na
- - (clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask),na
-
-
-
-
- {(CXXDeductionGuideNameExtra *)this,view(cpp)nand}
-
-
- {(CXXDeductionGuideNameExtra *)this,nand}
-
- C++ Literal operator
- C++ Using directive
- Objective-C MultiArg selector
- {(clang::detail::DeclarationNameExtra::ExtraKind)ExtraKindOrNumArgs,en}{" ",sb}{*this,view(cpp)}
-
- (CXXDeductionGuideNameExtra *)this
- - ExtraKindOrNumArgs
-
-
-
- {Template->TemplatedDecl,view(cpp)}
- C++ Deduction guide for {Template->TemplatedDecl,view(cpp)na}
-
-
- {Type,view(cpp)}
- {Type}
-
-
- {Name}
-
-
-
- {(ParsedTemplateArgument *)(this+1),view(cpp)na}{this,view(arg1)na}
-
- , {((ParsedTemplateArgument *)(this+1))+1,view(cpp)na}{this,view(arg2)na}
-
- , ...
- {Name,na}<{this,view(arg0)na}>
-
- - Name
-
- {this,view(arg0)na}
-
-
- NumArgs
- (ParsedTemplateArgument *)(this+1)
-
-
-
- - Operator
-
-
-
- {{annot_template_id ({(clang::TemplateIdAnnotation *)(PtrData),na})}}
- {{Identifier ({(clang::IdentifierInfo *)(PtrData),na})}}
- {(clang::tok::TokenKind)Kind,en}
-
-
- {BufferPtr,nasb}
-
-
- {TheLexer._Mypair._Myval2,na}
- Expanding Macro: {TheTokenLexer._Mypair._Myval2,na}
-
-
-
-
- [{(Token *)(CachedTokens.BeginX) + CachedLexPos,na}] {IncludeMacroStack._Mypair._Myval2._Mylast - 1,na}
-
- {IncludeMacroStack._Mypair._Myval2._Mylast - 1,na}
- {CurLexer._Mypair._Myval2,na}
- Expanding Macro: {CurTokenLexer._Mypair._Myval2,na}
-
-
- {this,view(cached)}
-
- CLK_LexAfterModuleImport
-
-
- [{Tok}] {PP,na}
-
-
- this
- *this
- {Id}
- &{Id}
- No visualizer for {Kind}
-
-
-
- =,
- &,
-
- {(LambdaCapture *)(Captures.BeginX),na}{this,view(capture1)na}
-
- ,{(LambdaCapture *)(Captures.BeginX)+1,na}{this,view(capture2)na}
-
- ,{(LambdaCapture *)(Captures.BeginX)+2,na}{this,view(capture3)na}
-
- ,...
- [{this,view(default)na}{this,view(capture0)na}]
-
-
-
- , [{TypeRep}]
-
-
- , [{ExprRep}]
-
-
- , [{DeclRep}]
-
-
- [{(clang::DeclSpec::SCS)StorageClassSpec,en}], [{(clang::TypeSpecifierType)TypeSpecType,en}]{this,view(extra)na}
-
- - (clang::DeclSpec::SCS)StorageClassSpec
- - (clang::TypeSpecifierType)TypeSpecType
- -
- TypeRep
-
- -
- ExprRep
-
- -
- DeclRep
-
-
-
-
-
- {Name,s}
-
-
- {RealPathName,s}
-
-
- {Name,s}
-
-
-
- - (clang::StorageClass)SClass
- - (clang::ThreadStorageClassSpecifier)TSCSpec
- - (clang::VarDecl::InitializationStyle)InitStyle
-
-
-
- {DeclType,view(left)} {Name,view(cpp)}{DeclType,view(right)}
-
- - Name
- - DeclType
-
-
-
- {(DeclaratorDecl*)this,nand}
-
- (DeclaratorDecl*)this,nd
- - Init
- - VarDeclBits
-
-
-
- {*(VarDecl*)this,nd}
-
- - ParmVarDeclBits
- *(VarDecl*)this,nd
-
-
-
- {"explicit ",sb}
-
- explicit({ExplicitSpec,view(ptr)na})
- {ExplicitSpec,view(int)en}
- {ExplicitSpec,view(int)en} : {ExplicitSpec,view(ptr)na}
-
-
- {ExplicitSpec,view(cpp)}{Name,view(cpp)nd}({(FunctionDecl*)this,view(parm0)nand}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)}
-
- - ExplicitSpec
- - (bool)FunctionDeclBits.IsCopyDeductionCandidate
- (FunctionDecl*)this,nd
-
-
-
- {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->ResultType,view(cpp)}
-
- {ParamInfo[0],na}{*this,view(parm1)nd}
-
- , {ParamInfo[1],na}{*this,view(parm2)nd}
-
- , {ParamInfo[2],na}{*this,view(parm3)nd}
-
- , {ParamInfo[3],na}{*this,view(parm4)nd}
-
- , {ParamInfo[4],na}{*this,view(parm5)nd}
-
- , /* expand for more params */
-
- auto {Name,view(cpp)nd}({*this,view(parm0)nd}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->ResultType,view(cpp)}
-
- {this,view(retType)nand} {Name,view(cpp)nd}({*this,view(parm0)nd})
-
- (clang::DeclaratorDecl *)this,nd
- - ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->ResultType
-
- {*this,view(parm0)nd}
-
-
- ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)((*(uintptr_t *)DeclType.Value.Value.Data) & ~15))->BaseType)->FunctionTypeBits.NumParams
- ParamInfo
-
-
-
- - TemplateOrSpecialization
-
-
-
- {*($T1*)&Ptr}
-
- ($T1*)&Ptr
-
-
-
- {($T1 *)Ptr}
-
- ($T1 *)Ptr
-
-
-
-
- {*((NamedDecl **)(this+1))[0],view(cpp)}{*this,view(parm1)}
-
- , {*((NamedDecl **)(this+1))[1],view(cpp)}{*this,view(parm2)}
-
- , {*((NamedDecl **)(this+1))[2],view(cpp)}{*this,view(parm3)}
-
- , {*((NamedDecl **)(this+1))[3],view(cpp)}{*this,view(parm4)}
-
- , {*((NamedDecl **)(this+1))[4],view(cpp)}{*this,view(parm5)}
-
- , /* Expand for more params */
- <{*this,view(parm0)}>
-
-
- NumParams
- (NamedDecl **)(this+1)
-
-
-
-
- {(clang::Stmt::StmtClass)StmtBits.sClass,en}
-
- - (clang::Stmt::StmtClass)StmtBits.sClass,en
-
-
-
- {*(clang::StringLiteral *)this}
- Expression of class {(clang::Stmt::StmtClass)StmtBits.sClass,en} and type {TR,view(cpp)}
-
-
-
- - *(unsigned *)(((clang::StringLiteral *)this)+1)
- - (const char *)(((clang::StringLiteral *)this)+1)+4+4,[*(unsigned *)(((clang::StringLiteral *)this)+1)]s8
-
-
-
- public
- protected
- private
-
- {*(clang::NamedDecl *)(Ptr&~Mask)}
- {*this,view(access)} {*this,view(decl)}
-
- - (clang::AccessSpecifier)(Ptr&Mask),en
- - *(clang::NamedDecl *)(Ptr&~Mask)
-
-
-
- [IK_Identifier] {*Identifier}
- [IK_OperatorFunctionId] {OperatorFunctionId}
- [IK_ConversionFunctionId] {ConversionFunctionId}
- [IK_ConstructorName] {ConstructorName}
- [IK_DestructorName] {DestructorName}
- [IK_DeductionGuideName] {TemplateName}
- [IK_TemplateId] {TemplateId}
- [IK_ConstructorTemplateId] {TemplateId}
- Kind
-
- Identifier
- OperatorFunctionId
- ConversionFunctionId
- ConstructorName
- DestructorName
- TemplateName
- TemplateId
- TemplateId
-
-
-
- NumDecls={NumDecls}
-
-
- NumDecls
- (Decl **)(this+1)
-
-
-
-
- {*D}
- {*(DeclGroup *)((uintptr_t)D&~1)}
-
- D
- (DeclGroup *)((uintptr_t)D&~1)
-
-
-
- {DS} {Name}
-
-
- {Decls}
-
- Decls
-
-
-
- {Ambiguity,en}: {Decls}
- {ResultKind,en}: {Decls}
-
-
- Invalid
- Unset
- {Val}
-
-
- Invalid
- Unset
- {($T1)(Value&~1)}
-
- - (bool)(Value&1)
- - ($T1)(Value&~1)
-
-
-
diff --git a/llvm.natvis b/llvm.natvis
deleted file mode 100644
index d83ae801..00000000
--- a/llvm.natvis
+++ /dev/null
@@ -1,408 +0,0 @@
-
-
-
-
- empty
- {(value_type*)BeginX,[Size]}
- {Size} elements
- Uninitialized
-
- - Size
- - Capacity
-
- Size
- (value_type*)BeginX
-
-
-
-
-
- {U.VAL}
- Cannot visualize APInts longer than 64 bits
-
-
- {Data,[Length]}
- {Length} elements
- Uninitialized
-
- - Length
-
- Length
- Data
-
-
-
-
- {(const char*)BeginX,[Size]s8}
- (const char*)BeginX,[Size]
-
- - Size
- - Capacity
-
- Size
- (char*)BeginX
-
-
-
-
-
- {First,[Last - First]s8}
-
-
-
- {Data,[Length]s8}
- Data,[Length]s8
-
- - Length
-
- Length
- Data
-
-
-
-
-
- {($T1)*(intptr_t *)Data}
-
-
-
-
-
- {($T1)(*(intptr_t *)Value.Data & $T6::PointerBitMask)}
- {($T4)((*(intptr_t *)Value.Data >> $T6::IntShift) & $T6::IntMask)}
- {$T6::IntMask}: {($T1)(*(intptr_t *)Value.Data & $T6::PointerBitMask)} [{($T4)((*(intptr_t *)Value.Data >> $T6::IntShift) & $T6::IntMask)}]
-
- - ($T1)(*(intptr_t *)Value.Data & $T6::PointerBitMask)
- - ($T4)((*(intptr_t *)Value.Data >> $T6::IntShift) & $T6::IntMask)
-
-
-
-
- {($T1)(*(intptr_t *)Value.Data & $T5::PointerBitMask)}
- {((*(intptr_t *)Value.Data >> $T5::IntShift) & $T5::IntMask)}
- {$T5::IntMask}: {($T1)(*(intptr_t *)Value.Data & $T5::PointerBitMask)} [{((*(intptr_t *)Value.Data >> $T5::IntShift) & $T5::IntMask)}]
-
- - ($T1)(*(intptr_t *)Value.Data & $T5::PointerBitMask)
- - ((*(intptr_t *)Value.Data >> $T5::IntShift) & $T5::IntMask)
-
-
-
-
-
- {($T4)(*(intptr_t *)Val.Value.Data & $T2::InfoTy::PointerBitMask)}
-
-
- {($T5)(*(intptr_t *)Val.Value.Data & $T2::InfoTy::PointerBitMask)}
-
- Unexpected index in PointerUnion: {(*(intptr_t *)Val.Value.Data>>$T2::InfoTy::IntShift) & $T2::InfoTy::IntMask}
-
- - "$T4",s8b
- -
- ($T4)(*(intptr_t *)Val.Value.Data & $T2::InfoTy::PointerBitMask)
-
- - "$T5",s8b
- -
- ($T5)(*(intptr_t *)Val.Value.Data & $T2::InfoTy::PointerBitMask)
-
-
-
-
-
- {{ empty }}
- {{ head={Head} }}
-
-
- Head
- Next
- this
-
-
-
-
-
- empty
- RefPtr [1 ref] {*Obj}
- RefPtr [{Obj->RefCount} refs] {*Obj}
-
- - Obj->RefCount
- Obj
-
-
-
-
- {{ [Small Mode] size={NumNonEmpty}, capacity={CurArraySize} }}
- {{ [Big Mode] size={NumNonEmpty}, capacity={CurArraySize} }}
-
- - NumNonEmpty
- - CurArraySize
-
- NumNonEmpty
- ($T1*)CurArray
-
-
-
-
-
- empty
- {{ size={NumEntries}, buckets={NumBuckets} }}
-
- - NumEntries
- - NumBuckets
-
- NumBuckets
- Buckets
-
-
-
-
-
- {{ size={NumItems}, buckets={NumBuckets} }}
-
- - NumItems
- - NumBuckets
-
- NumBuckets
- (MapEntryTy**)TheTable
-
-
-
-
-
- empty
- ({this+1,s8}, {second})
-
- - this+1,s
- - second
-
-
-
-
- {Data}
-
-
-
- None
- {Storage.value}
-
- - Storage.value
-
-
-
-
- Error
- {*((storage_type *)TStorage.buffer)}
-
- - *((storage_type *)TStorage.buffer)
- - *((error_type *)ErrorStorage.buffer)
-
-
-
-
-
-
- {{little endian value = {*(($T1*)(unsigned char *)Value.buffer)} }}
-
- - (unsigned char *)Value.buffer,1
- - (unsigned char *)Value.buffer,2
- - (unsigned char *)Value.buffer,4
- - (unsigned char *)Value.buffer,8
-
-
-
-
-
- {{ big endian value = {*(unsigned char *)Value.buffer} }}
- {{ big endian value = {(($T1)(*(unsigned char *)Value.buffer) << 8)
- | ($T1)(*((unsigned char *)Value.buffer+1))} }}
- {{ big endian value = {(($T1)(*(unsigned char *)Value.buffer) << 24)
- | (($T1)(*((unsigned char *)Value.buffer+1)) << 16)
- | (($T1)(*((unsigned char *)Value.buffer+2)) << 8)
- | ($T1)(*((unsigned char *)Value.buffer+3))} }}
- {{ big endian value = {(($T1)(*(unsigned char *)Value.buffer) << 56)
- | (($T1)(*((unsigned char *)Value.buffer+1)) << 48)
- | (($T1)(*((unsigned char *)Value.buffer+2)) << 40)
- | (($T1)(*((unsigned char *)Value.buffer+3)) << 32)
- | (($T1)(*((unsigned char *)Value.buffer+4)) << 24)
- | (($T1)(*((unsigned char *)Value.buffer+5)) << 16)
- | (($T1)(*((unsigned char *)Value.buffer+6)) << 8)
- | ($T1)(*((unsigned char *)Value.buffer+7))} }}
-
- - (unsigned char *)Value.buffer,1
- - (unsigned char *)Value.buffer,2
- - (unsigned char *)Value.buffer,4
- - (unsigned char *)Value.buffer,8
-
-
-
-
- {ID}
-
- - ID
-
- - SubclassData
-
- - *ContainedTys
-
- {NumContainedTys - 1}
-
-
- NumContainedTys - 1
- ContainedTys + 1
-
-
-
- - SubclassData == 1
-
- - (SubclassData & llvm::StructType::SCDB_HasBody) != 0
- - (SubclassData & llvm::StructType::SCDB_Packed) != 0
- - (SubclassData & llvm::StructType::SCDB_IsLiteral) != 0
- - (SubclassData & llvm::StructType::SCDB_IsSized) != 0
-
- {NumContainedTys}
-
-
- NumContainedTys
- ContainedTys
-
-
-
-
- - *ContainedTys
- - ((llvm::ArrayType*)this)->NumElements
-
- - *ContainedTys
- - ((llvm::VectorType*)this)->ElementQuantity
-
- - *ContainedTys
- - ((llvm::VectorType*)this)->ElementQuantity
-
- - SubclassData
- - *ContainedTys
-
- - Context
-
-
-
-
- $(Type) {*Value}
-
-
-
- $(Type) {(llvm::ISD::NodeType)this->NodeType}
-
-
- NumOperands
- OperandList
-
-
-
-
-
- i{Val.BitWidth} {Val.VAL}
-
-
-
- {IDAndSubclassData >> 8}bit integer type
-
-
-
- $(Type) {*VTy} {this->getName()} {SubclassData}
- $(Type) {*VTy} anon {SubclassData}
-
- - (Instruction*)this
- - (User*)this
-
- UseList
- Next
- Prev.Value & 3 == 3 ? (User*)(this + 1) : (User*)(this + 2)
-
-
-
-
-
-
- - Val
-
-
-
-
-
-
- $(Type) {*VTy} {this->getName()} {SubclassData}
- $(Type) {*VTy} anon {SubclassData}
-
- - (Value*)this,nd
- - *VTy
-
- NumUserOperands
- (llvm::Use*)this - NumUserOperands
-
-
- NumUserOperands
- *((llvm::Use**)this - 1)
-
-
-
-
-
- {getOpcodeName(SubclassID - InstructionVal)}
-
- - (User*)this,nd
-
-
-
-
- {this->getName()} {(LinkageTypes)Linkage} {(VisibilityTypes)Visibility} {(DLLStorageClassTypes)DllStorageClass} {(llvm::GlobalValue::ThreadLocalMode) ThreadLocal}
-
-
-
-
-
-
- this
- Next
- this
-
-
-
-
-
-
- pImpl
-
-
-
-
- {ModuleID,s8} {TargetTriple}
-
-
-
- $(Type) {PassID} {Kind}
-
-