草庐IT

llvm-project

全部标签

c++ - 在 LLVM 中间接调用时如何从 CallInst 获取 FunctionType

如果是直接调用函数,可以通过以下代码获取Function类型。Function*fun=callInst->getCalledFunction();Function*funType=fun->getFunctionType();但是,如果调用是间接的,即通过函数指针,则getCalledFunction返回NULL。所以我的问题是如何在通过函数指针调用函数时获取函数类型。 最佳答案 要从间接调用中获取类型,请使用getCalledValue而不是getCalledFunction,如下所示:Type*t=callInst->getC

c++ - "Clang with Microsoft CodeGen"和 "LLVM-vs2014"有什么区别?

在VisualStudio2015或更高版本下,我们可以通过两种方式使用clang:SelectClangwithMicrosoftCodeGenasthePlatformToolset;InstallLLVM-3.8-win64.exe,andselectLLVM-vs2014asthePlatformToolset;我知道这两种方式都使用相同的编译器:clang3.8。但是,我不知道它们之间有什么区别。我的经验表明ClangwithMicrosoftCodeGen比LLVM-vs2014更易于调试。换句话说:IcandebugaprogrambuiltbyClangwithMicr

c++ - std::vector 和 llvm::SmallVector 有什么区别?什么时候使用哪一个?

我试图了解SmallVector容器在LLVM中的使用。我认为std::vector可以用来代替小vector。另外,如果我们在llvm::SmallVector中放入比其大小更多的元素,会发生什么情况? 最佳答案 llvm::SmallVector是为小型阵列优化的vector。这种优化来自于不为有限数量的元素执行堆分配。如果您添加的元素多于描述的使用自动存储分配的元素,它将回退到std::vector的行为并分配越来越大的数组。llvm::SmallVectorsmallVector;for(inti=0;i当您知道您将始终拥有

c++ - Visual Studio C++ : Unit test exe project with google test?

使用VisualStudio2010C++。我正在尝试单元测试并决定尝试GoogleTest(gtest)。我有一个编译为MFC可执行文件的现有项目(我也对如何测试编译为DLL的项目感兴趣)。我对单元测试约定的理解是,您应该为您的测试创建一个新的单独项目。所以我在同一个解决方案中为我的单元测试创​​建了一个新项目。但是我如何链接这些项目?我可以从我的测试项目中测试我的exe项目的任意函数/方法吗?执行此操作的常规方法是什么? 最佳答案 我认为组织单一测试的最佳方式是:不要更改您的主要项目。该结构应该独立于您的测试操作。在我看来,将您

c++ - 如何在LLVM中了解 'nullptr'的源代码?

最近,我想知道nullptr的工作原理。我在http://www.stroustrup.com/N1488-nullptr.pdf中找到了代码(对不起,我没有10个声誉,因此我无法在此处发布图片,您可以点击上面的链接,代码位于第3页。)代码很酷。然后我再次在Woboq中搜索了关键字nullptr,发现LLVM中的源代码与上面的不同,我将它们复制到下面。struct_LIBCPP_TEMPLATE_VISnullptr_t{void*__lx;struct__nat{int__for_bool_;};_LIBCPP_ALWAYS_INLINE_LIBCPP_CONSTEXPRnullpt

【R】Rstudio Project如何找回误删的代码

背景:今天不小心删掉了一个项目的批处理文件(batch_run.R),心脏乱跳了好一会儿……还好Rstudio有自动备份由于项目需要更新,于是把RPrpject点击copytofolder,不知道什么情况,导致archive里面没有文件了,之前的folder文件也丢失了刚好这个文件没有进行GitLabor本地git备份里面包含了好多步骤,自己重写可能要半天到一天时间;目的:如果IT没有提供类似SASserver恢复文件的功能,如何自己来找到遗失的文件;找回代码的步骤:1.进入Project的根目录,找到.Rproj.user/文件夹查看.Rproj.user隐藏文件image.pngRstud

c++ - 如何使用 LLVM 在 Windows 上为 ARM 编译 C++ 程序?

目标仅使用LLVM在Windows上为ARM编译C++程序。为什么LLVM因为许可许可。我开始怀疑我对LLVM的理解是否正确。在主机上做使用clang(前端)生成中间表示。此表示与目标无关。使用llc(后端)生成目标汇编代码。使用lld-link.exe生成可执行文件。然后在目标机器上执行。主机Windows10,64位目标机用armcortex-a57驱动PX程序intmain(intargc,char*argv[]){intx=41;x++;returnx;}我已经检查并编译了LLVM(使用VisualStudio2015,发布版本,CPU=x64)我的尝试clang.exe-ta

c++ - Visual Studio 速成版 2013 : How to create project with existing C++ source files ?

关于这个话题已经有很多讨论,但仍然没有具体的答案,或者至少我找不到它。我找不到选项File->New->Projectfromexistingfiles我已经有了源文件,为了利用visualstudioexpress中的一些工具,我安装了试用版2013,甚至在玩了一会儿并在互联网上寻找它之后,我也没有找到这个选项。在2013版本中,是否有任何可能的方法来使用现有源文件创建项目?还是我应该安装一些旧版本?建议/意见/解决方案..请 最佳答案 您可以尝试创建一个空白项目,然后将文件导入其中。不确定您使用的版本是否能够做到这一点。否则,创

c++ - 是否有等效于 Clang/LLVM 的 .spec 文件,我在哪里可以找到引用?

可以使用.specs文件将gcc驱动程序配置为使用特定链接器、特定选项和其他详细信息(例如覆盖系统header)。GCC(4.9.0)版本的当前(截至撰写本文时)手册describestheSpecFileshere.Clang/LLVM有没有类似的机制。显然Clang有thenotionofadriver同样,但我无法提供任何关于Clang是否存在规范文件或类似机制以及如何使用它们的文档。我对C和C++都感兴趣,但可能指向它们中的任何一个的指针都会让我开始。目标是覆盖系统头文件和库路径以及之前简要提到的链接器。 最佳答案 根据th

CMake Error at CMakeLists.txt:3 (project): No CMAKE_CXX_COMPILER could be found. flutter desktop

在学习flutter的过程中,本人build一个windowdesk桌面应用,发现出现如下错误: CMakeErroratCMakeLists.txt:3(project):NoCMAKE_CXX_COMPILERcouldbefound.flutterdesktop,在StackOverflow搜索到如下方案:打开vsinstaller,然后点击【修改】,出现上图,在右边的installationdetails里面找到windowssdk的选项,全部勾选下载安装,然后flutterclean再重新build即可。