jjzjj

c++ - 禁用 Clang 工具诊断

这将是一个一般性问题。我目前正在为clang编写一个与AST遍历相关的工具。所以我有一个frontendaction来创建一个ASTConsumer,它还有一个RecursiveASTVistor。我调用Tool.run()来执行我的操作。它运行良好,但默认情况下clang会打印出我尝试分析的repo中的所有警告和错误。无论如何我可以禁用clang诊断吗?我知道当我们用clang编译时,-w选项都会禁用诊断。但是我们如何为工具做到这一点?顺便说一下,我的工具位于/llvm/tools/clang/tools/extra/mytool谢谢。 最佳答案

c++ - LLVM,全局整数数组零初始化器

我似乎无法弄清楚如何为全局整数数组设置zeroinitializer。目前我的代码输出:@a=commonglobal[1xi32],align4但是,clangfoo.c-S-emit-llvm产生:@a=commonglobal[1xi32]zeroinitializer,align4我的代码目前是这样的,我的setInitializer()代码不起作用,被注释掉了:TheModule=(argc>1)?newModule(argv[1],Context):newModule("Filename",Context);//Unrelatedcode//currentGlobal->i

c++ - apt-get 安装后未找到 LLVM header

我使用LLVMNightlypackageslink中给出的以下命令安装了llvm和clang3.9以及所有其他软件包.sudoapt-getinstallclang-3.9clang-3.9-docllvm-3.9llvm-3.9-devllvm-3.9-docllvm-3.9-examplesllvm-3.9-runtimeclang-format-3.9python-clang-3.9libclang-common-3.9-devlibclang-3.9-devlibclang1-3.9libclang1-3.9-dbglibllvm-3.9-ocaml-devlibllvm3.

c++ - 使用 LLVM API 生成静态代码

从包含一些IR的LLVM模块*Mod开始:如何使用特定的后端从中生成目标特定的汇编程序?不幸的是,Kaleidoscope教程没有对此进行详细说明。它仅使用执行引擎对程序进行JIT编译(在构建、目标体系结构上),但实际上并不选择特定的后端来生成特定于目标的汇编程序。任何LLVM教程也没有,因为我认为它们没有详细说明如何构建静态编译器。因此,这个问题可以提供这条缺失的信息。由于我们要构建一个静态编译器,所以我们不想使用llc等命令行工具来完成这项工作。我们想使用LLVMAPI。为了使这个更具体,让我们从这段代码开始:LLVMContext&Context=getGlobalContext

c++ - 如何从 ifstream 加载 LLVM 位码文件?

我试图在运行时加载.bc文件中定义的LLVM模块,但遇到了障碍。感兴趣的位码已从hello.cpp生成://hello.cpp//buildwith://clang-3.4-c-emit-llvmhello.cpp-ohello.bc#includevoidhello(){std::cout当下面的程序试图在运行时加载它时,它在llvm::BitstreamCursor::Read()中崩溃://main.cpp//buildwith://g++main.cpp`llvm-config-3.4--cppflags--ldflags--libs`-ldl-lpthread-lcurses

c++ - 在 LLVM 3.9.1 中,我应该用什么替换 getGlobalContext()?

在做旧教程时,我经常看到使用了getGlobalContext()。但是,在LLVM3.9.1中,无法再找到此函数。对于等效行为,我应该用什么替换这些调用? 最佳答案 你可以使用staticLLVMContextTheContext; 关于c++-在LLVM3.9.1中,我应该用什么替换getGlobalContext()?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4176

c++ - 用 clang++ 生成的可执行文件变得疯狂

#include#include#include#includeusingnamespacestd;classBook{public:inta;intb;};intmain(){Bookb1;b1.a=10;b1.b=20;cout当我们编译上面的代码时clang++test.cc-oa.exe并运行a.exe完美运行。但是当我们用编译同一个程序时clang++test.cc-emit-llvm-S-oa.exe现在当我们运行它时,程序会启动ntvdm.exe(可以在进程资源管理器中看到)并且命令提示符开始表现得很奇怪。软件堆栈:clangversion2.9(tags/RELEASE

c++ - 检查指向 LLVM 中指针类型的指针

如何在LLVM中检查一个操作数是pointertopointer类型?我们可以检查是否是操作数指针,但是如何检查它是否指向指针呢?我正在使用Clang生成中间代码并使用C++作为源文件。 最佳答案 您可以调用Type::getContainedType(int)来访问指针对象类型。所以它应该是这样的:boolisPointerToPointer(constValue*V){constType*T=V->getType();returnT->isPointerTy()&&T->getContainedType(0)->isPointe

c++ - 链接 clang-llvm

我一直在使用clang/llvm开发一个小工具,但我未能成功获得g++和gnu的链接器以将我的代码正确链接到clang。我的链接器产生了以下错误:undefinedreferenceto`clang::FileManager::~FileManager()'undefinedreferenceto`clang::FileManager::FileManager()'undefinedreferenceto`llvm::sys::getHostTriple()'undefinedreferenceto`clang::Diagnostic::Diagnostic(clang::Diagno

c# - 用于优化性能的 C++ 虚拟机

支持JITed语言(如C#和Java)的一个论点是,它们可以更好地执行优化,因为虚拟机的运行时分析可以比静态优化的C++代码更好地优化代码。但是,我想知道我们是否也可以使用虚拟机在运行时为C++或任何类似语言优化代码。例如,我们可以采用LLVM编译器生成的IR,并制作一个虚拟机来解释、JIT和优化代码,类似于Java和C#的情况。当然,不会有垃圾收集,但优化因素会在那里。有没有人在这方面工作过。有没有关于这方面的论文,工具?这种方法有多好? 最佳答案 这是一个有缺陷的论点。是的,虚拟机有更多的信息可以使用,但与编译器相比,它们的时间