草庐IT

LLVM_CONFIG

全部标签

c++ - 将 CMake 与 LLVM 一起使用时出错

所以我正在尝试使用LLVM构建一个玩具编译器,并且我想使用CMake作为我的构建系统。我尝试使用sampleCMakeLists.txt来自LLVM的网站,但在运行cmake时遇到以下错误:CMakeErrorat/usr/share/llvm-3.8/cmake/LLVMConfig.cmake:178(include):includecouldnotfindloadfile:/usr/share/llvm/cmake/LLVMExports.cmakeCallStack(mostrecentcallfirst):CMakeLists.txt:4(find_package)CMake

c++ - 如何在 LLVM 模块中插入函数

我正在编写一个LLVMpass,我通过调用llvm::CloneFunction克隆了一些函数。现在我还想在模块中插入这些函数。我该怎么做? 最佳答案 使用Function::Create或其他方式创建一个新函数。Function的构造函数接受要插入新函数的模块。使用CloneFunctionInto将函数克隆到新函数中,或者只是复制您需要的BB。 关于c++-如何在LLVM模块中插入函数,我们在StackOverflow上找到一个类似的问题: https:/

c++ - 如何在 LLVM 中声明一个函数并在以后定义它

如何在LLVM中声明一个函数(具有特定签名)并创建对它的调用,例如llvm::Value*return=m_builder.CreateCall(function,arguments);但稍后定义函数体(必须是InlineAsm函数)?稍后我将按以下方式访问模块中的函数for(llvm::Module::iteratorit=mod->begin(),end=mod->end();it!=end;++it){if(needsImplementation(it)){llvm::InlineAsm*inlineCall=...it.body=inlineCall//Thisdoesn'te

c++ - 使用 LLVM pass 添加内在函数

我已经使用LLVM传递向输入代码添加了一个内在函数。我能够看到内部调用,但我无法弄清楚如何将代码编译到我的目标架构(x86_64)。我正在运行以下命令:clang++$(llvm-config--ldflags--libsall)ff.s-ofoo但是链接器提示undefinedreference:/tmp/ff-2ada42.o:Infunction`fact(unsignedint)':/home/rubens/Desktop/ff.cpp:9:undefinedreferenceto`llvm.x86.sse3.mwait.i32.i32'/tmp/ff-2ada42.o:Inf

c++ - LLVM/Clang 是否支持弱链接的 'weak' 属性?

简而言之:LLVM/Clang是否支持“弱”属性?我正在学习一些Arduino库源代码(更详细的是HardwareSerial.cpp),我发现了一些以前从未使用过的有趣属性weak:#ifdefined(HAVE_HWSERIAL0)voidserialEvent()__attribute__((weak));boolSerial0_available()__attribute__((weak));#endif我发现它很有趣,而且我读到如果未定义,链接器应将其设置为NULL。但是,在我使用Clang进行的测试中,我无法使用它。文件lib.cpp:#include"lib.h"#inc

c++ - LLVM 是避免动态转换规则的异常(exception)吗?

LLVM有自己的RTTI替代方案,它比内置RTTI的速度有所提高,并允许动态转换为没有vtable的类(dyn_cast)。但是,它仍然可以完全按照dynamic_cast的方式使用。尽管它确实允许它与更多类一起使用,但已被使用。dyn_casttemplatedocumentationLLVM是一个享有盛誉的C++项目,所以这似乎与俗语背道而驰,即过多的动态转换是糟糕设计的标志,也称为代码异味。当然,与标准dynamic_cast相比,性能更好的动态转换并不能改善其在设计中的使用。.那么谁在这里?在C++代码中是否存在大规模使用动态转换是一个好的设计选择的情况?Google在LLVM

Spring Cloud Config核心功能和原理解析

配置管理的前世今生随着技术的发展,配置项管理变得越来越简单,尽管如今它只限于管理业务属性或者配置初始化参数等等,但是当年它可肩负着SpringIOC的光荣使命,风光无限。想当年刚入行的时候还是SSH(Struts+Spring+Hibernate)的天下,那时远没有如今这些丰富的开源组件,一个标准的Java程序员就是靠SSH这三把刷子打天下,正所谓学好数理化,走遍天下都不怕,但那时候的配置管理是一件让人头疼的事情。早先SSH的配置管理可以说是相当复杂,每个项目的XML配置文件大大小小几十个。如果有过Struts1的使用经验就能理解这种痛苦,创建一个Form表单从前到后要创建好几个JavaCla

c++ - 如何在 LLVM IR 中获取字符串文字的值?

我是LLVM的新手。我正在尝试编写一个基本的Pass,当它被赋予中间表示时,它将检查printf调用的参数。如果格式字符串不是字符串文字,那么我当然无法检查它。但通常是这样。我要检查的示例IR是:@.str=privateunnamed_addrconstant[7xi8]c"Hi%u\0A\00",align1definei32@main()nounwind{entry:%retval=allocai32,align4storei320,i32*%retval%call=calli32(i8*,...)*@printf(i8*getelementptrinbounds([7xi8]*

c++ - pkg-config 找不到 opencv

我在lubuntu12.10发行版上安装了opencv。然后,当我尝试编译使用opencv的代码时,它说找不到它。所以我在终端中尝试:pkg-config--cflags--libsopencv它回答我找不到opencv。但是这些文件安装在/usr/lib中。我不明白为什么找不到它们。 最佳答案 您必须将pkg-config--cflags--libsopencv放在g++行的末尾。例如:g++test.cpp-otest`pkg-config--cflags--libsopencv`编译g++`pkg-config--cflags

c++ - 缺少用于 LLVM 编译器-rt 的 libclang_rt.san-x86_64.a 文件

我刚刚构建了LLVM/Clangcompiler-rt并尝试了-fsanitize选项。但奇怪的是链接失败了,因为它找不到libclang_rt.san-x86_64.a。/usr/bin/ld:cannotfind/home/hongxu/RESEARCH/llvm-git/obj/bin/../lib/clang/3.7.0/lib/linux/libclang_rt.san-x86_64.a:Nosuchfileordirectoryclang-3.7:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)当我进入