草庐IT

llvm-project

全部标签

c++ - 即时编译 C++ : clang/libtooling fails to set Triple for LLVM IR

假设我想即时编译一个C++字符串:llvm::LLVMContextcontext;std::unique_ptraction=std::make_unique(&context);clang::tooling::runToolOnCode/*WithArgs*/(action.get(),"intfoo(intx){return++x;}");std::unique_ptrmodule=action->takeModule();不幸的是,当LLVM尝试转换IR时,似乎有一个异常表明Triple未设置(https://clang.llvm.org/docs/CrossCompilati

c++ - eclipse CDT : rebuilding a dependent project

我正在使用在linux上运行的eclipseIndigo+CDT开发一个C++项目它由一个库项目和一个带有该库单元测试的项目组成。显然第二个项目依赖于第一个。两个项目都使用外部构建器但是当我修改第一个项目的header时,它不会重建测试项目。而且我不能让它这样做......它只会重新链接第二个项目,即使标题包含在测试项目中也是如此。这非常烦人,因为我经常在处理库时进行工作构建,然后在某个时候我进行了完全重建,我看到了很多错误,这些都是我30分钟前做的事情!CDT全局构建控制台的示例输出:****BuildofconfigurationDebugforprojectlibxxx****m

c++ - VS2008 : Disable warnings in included header files outside the project

这可能吗?我不想全局禁用警告,因为我想检查我自己的头文件是否有警告。 最佳答案 您可以禁用有关包含外部头文件的警告:#pragmawarning(push)#pragmawarning(disable:thewarning)//includehere#pragmawarning(pop)如果您需要多次包含标题,您可以使用编译指示创建一个标题并将其包含在内。问了同样的问题here. 关于c++-VS2008:Disablewarningsinincludedheaderfilesoutsi

c++ - 自动化 LLVM 风格的 RTTI 代码

对于特定的类层次结构,我需要知道基类引用是否是特定派生类的实例。由于不同的原因,我不能在这里使用标准的C++RTTI,我需要实现一个自定义的instanceof机制。LLVM-stleRTTI会满足我的需求,但我想知道是否存在一种方法(以某种方式使用模板)来自动执行classof方法?是否有其他/更简单的实现这种机制可以知道基类是否是派生类的实例?我的约束:我没有多重继承,但我有多个继承级别。对内存占用的影响必须尽可能小,并且不可能执行动态分配。 最佳答案 Iwaswonderingifitwouldexistsaway(someh

c++ - llvm,加载 poolalloc 以选择

我想在llvm中运行别名分析,特别是我想运行-ds-aa它在模块poolalloc中。根据poolalloc文档,我需要将它的模块加载到opt。我所做的是:opt-load/usr/local/lib/LLVMDataStructure.so-load/usr/local/lib/poolalloc.so-ds-aa-aa-evalhello.bc-disable-output-stats但我得到下一个输出:opt:Unknowncommandlineargument'-ds-aa'.Try:'opt-help'opt:Didyoumean'-no-aa'?我不知道我做错了什么。如何在

使用VisualStudio2022插件(Visual Studio Installer Projects 2022)打包 .Net 6 框架下的 WPF项目 为安装文件

目录序言一、还是安装VisualStudioInstallerProjects2022插件二、创建SetupProject项目2.1在现有解决方案中添加SetupProject项目2.2添加需要打包的文件 2.2.1首先,要找到项目文件所在路径,假定你需要打包的项目为LearnCreatClassByString。2.2.2向SetupProject项目添加待打包文件。2.2.3选择该文件夹内所有文件和文件夹,添加。2.3进行项目输出 2.4创建快捷方式2.5为快捷方式选定图标2.6添加卸载程序和卸载程序快捷方式(非必须)2.7生成SetupProject项目序言使用VisualStudio插

c++ - 使用 cmake、clang 和 llvm 为 visual studio 构建工具链

我在谷歌上搜索了很多,但没有找到合适的答案,所以我在这里问。要从现有代码开发一个应使用cmake和clang编译的c++项目,我需要采取哪些步骤?我还想拥有所有不错的功能,例如自动完成和使用断点进行调试以及逐步调试。 最佳答案 查看与VisualStudio集成的Windows构建的最新LLVM快照页面here.有一个安装程序和一个代码格式化插件。您不会获得自动完成功能,并且Clang/LLVM与VisualStudio中的调试无关(除了如果您使用Clang编译它可能无法工作)。另见thisinterestingblogpost在拥

c++ - 集成 LLVM passes

这可能是一个菜鸟问题,但有没有办法集成我的LLVMmodulepass以在转换阶段默认调用?现在我正在使用这个语法来加载我的通行证并注册它~/llvm/llvm/build/Debug+Asserts/bin/clang-Xclang-load-Xclang~/llvm/llvm/build/Debug+Asserts/lib/SOMEPASSLIB.so(问题是当我想用这个pass构建一些包时,编译器在我说时接受它,将加载部分作为CFLAGSenv变量传递,但是一些makefile也使用CFLAGS进行链接,链接器不知道它可以使用此信息做什么并导致构建失败:\)

c++ - 为什么LLVM选择开放寻址哈希表来实现llvm::StringMap?

许多消息来源说open-addressing,llvm::StringMap中使用的散列冲突处理方法不稳定。据说当负载系数很高(这是可以想象的)时,开放寻址不如链接。但是如果负载因子低,开放寻址会造成巨大的内存浪费,因为我必须在内存中分配Bucket_number*sizeof(Record)字节,即使大多数桶都没有记录。所以我的问题是,LLVM选择开放寻址而不是分离链的原因是什么?仅仅是因为缓存局部性带来的速度优势(记录本身存储在桶中)吗?谢谢:)编辑:C++11标准对std::unordered_set和std::unordered_map的要求暗示了链接方法,而不是开放寻址。为什

c++ - 在 LLVM 中生成函数指针

我正在编写我的第一个LLVM示例。我正在尝试构建一个小型LLVM模块,该模块由一个函数组成,该函数接受一个函数的名称并返回一个指向它的指针。问题是我不知道如何在LLVM中生成函数指针。我通过调用getDeclaration(...)获得了一个Function对象。有什么方法可以获得指向它的指针吗? 最佳答案 Function是一个GlobalValue,所以它本身就是一个指针。同时,您可以使用LLVM的C++后端生成C++API调用,这将重新创建您提供给llc的IR。例如,将以下代码输入http://llvm.org/demo:vo