标签: llvm-clang

clang++ 总是生成空的 proraw 覆盖率报告

我第一次尝试将 C++ 中的覆盖范围与 clang 6 集成,并且一直在遵循指南。

\n\n

我成功编译了二进制文件,生成了一个.profraw文件,并.profdata按照步骤 1、2 和 3a 中所述生成了一个文件。但是,当我尝试创建 3b 中所述的面向行的覆盖率报告时,我收到以下消息:

\n\n
error: build/debug/dane: Failed to load coverage: No coverage data found\n
Run Code Online (Sandbox Code Playgroud)\n\n

检查.profraw文件后,我发现它是空的。我尝试稍微更改一下代码并再次运行,但生成的代码.profraw始终为空。

\n\n

我的main.cpp文件:

\n\n
error: build/debug/dane: Failed to load coverage: No coverage data found\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的SConstruct文件:

\n\n
#include <iostream>\n\nint main(int argc, char **argv) {\n    std::cout << "Hello, World!" << std::endl;\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

命令行输出:

\n\n
\nenv = Environment(CXX=\'clang++\', CXXFLAGS=[\'-Wall\', \'-g\', …
Run Code Online (Sandbox Code Playgroud)

c++ code-coverage llvm-clang clang++

2
推荐指数
1
解决办法
1635
查看次数

来自Clang的意外输出

我一直在测试clang-llvm,看看我的学校IT部门是否值得将它添加到我们学生编程的机器上.对于我们的所有作业,我们需要使用编译g++ -Wall -W -pedantic-errors *.cpp,所以我只是将命令转换为clang++ -Wall -W -pedantic-errors.我得到了一些我没想到的输出:

Attempting to compile...
In file included from test_library.cpp:6:
In file included from ./test_library.h:64:
In file included from ./library.h:167:
./library.hpp:20:23: warning: unused variable 'e' [-Wunused-variable]
    catch(Exception & e)
                      ^
Run Code Online (Sandbox Code Playgroud)

而GCC编译器没有给出catch块中未使用的变量的错误.有什么我可以这样做,以便Clang不会对try/catch块中未使用的变量感到不满,同时保持命令类似于g ++吗?

Clang-LLVM(v2.7)GNU GCC(v4.4.4)Fedora 13

c++ clang llvm-clang

1
推荐指数
1
解决办法
986
查看次数

将TextMate配置为为Objective-C运行clang而不是gcc

我正在运行最新的TextMate 1.5(在OSX Lion上)并安装了最新的XCode 4.3.通过绕过XCode开始并使用TextMate和命令行进行普通样本和练习,我在学习Objective-C时走的路很慢.在TextMate中命中Cmd-R时,(控制台)会构建并运行类型化的Objective-C控制台程序.但是,它不会编译应该(从我的POV)编译的东西,因为从命令行编译它们与clang工作正常.当我从命令行切换到构建时,我发现当我使用gcc而不是clang时,同样的事情会失败.

我的问题是 - 当我点击Cmd-R获取Objective-C(.m)源文件时,如何说服TextMate使用clang而不是gcc?

(我通过捆绑设置,但无济于事,谷歌搜索等等.所以它必须是一个简单的东西,我很想丢失,或者没有人想过这样.我假设第一个.)

PS我几周前从Windows转换过来,所以不要以为我是Mac专家.

textmate objective-c llvm-clang

1
推荐指数
1
解决办法
692
查看次数

用clang编译CUDA

我是LLVM的新手.我听说clang支持CUDA.如何使用clang编译CUDA?我是否必须进行一些配置更改或包含任何特定的头文件?我在网上找不到任何相关信息.有可能吗?

现在当我尝试用clang编译一个虚拟cuda程序时

clang -I /usr/local/cuda/include filename.cu 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

 unknown type name '__global__'

 __global__ void nothing(int *A)
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!顺便说一句,我在mac中运行它.

cuda clang llvm-clang

1
推荐指数
2
解决办法
4874
查看次数

Clang C到LLVM汇编修剪"错误代码"

我试图理解C语言的clang编译器及其产生的中间代码.

我有一系列编译,生成LLVM-IR的函数,我不明白为什么.

这是第一个:

int f(int x){
}
Run Code Online (Sandbox Code Playgroud)

这会生成LLVM代码

define i32 @f(i32 %x) nounwind uwtable readnone{
  ret i32 undef
}
Run Code Online (Sandbox Code Playgroud)

我认为这完全可以理解.函数体未定义!

这是下一个C函数:

int f(int x){
  if (x < 0) 
    {}
  else
    {}
}
Run Code Online (Sandbox Code Playgroud)

当clang编译它时,它会生成完全相同的LLVM-IR.编译器识别出正文是垃圾,并返回undefined!LLVM知道这是垃圾的方式是它的优化器.Clang - > LLVM使用"返回值收集器"约定 - 在定义函数时 - %1被分配为"返回值".所有返回语句都会更新此值,最终,在函数体末尾的LLVM中有一个ret语句,它基本上返回此值.LLVM发现变量在没有更新或初始化的情况下被分配和返回,并将其设置为undefined.

现在为踢球者!!

int f(int x){
  if (x<0)
    {}
  else
    {           
      return 3;
    }
}
Run Code Online (Sandbox Code Playgroud)

转换为以下LLVM-IR.

define i32 @f(i32 %x) nounwind uwtable readnone {
  ret i32 3
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,未修改的代码被删除.当(x <0)时,C函数应该是未定义的!任何人都可以解释为什么这个代码被修剪掉了?

c compiler-construction llvm-clang

1
推荐指数
1
解决办法
114
查看次数

某些类添加"fno-objc-arc"后,在xcode 5.0中出现错误

我正在使用Xcode 5.0,我将JSON库文件复制到我的项目中,这些文件是用非弧构建的,所以我为这些JSON库编译器源添加了编译器标志"fno-objc-arc".这样做后我得到苹果LLVM 5.o错误.

clang: error: no such file or directory: 'fno-objc-arc'
Command    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个错误.

objective-c llvm-clang ios

1
推荐指数
1
解决办法
1933
查看次数

如何将LLVMPass long opt命令更改为简单命令

我正在研究LLVM混淆项目.我已经写了一个llvm传递(让我们说流动扁平化传递),我使用以下命令在源(test.c)上运行它:

clang -emit-llvm test.c -c -o test.bc 
opt -load ../../.. LLVMFlattening.so -fla <test.bc>/dev/null
Run Code Online (Sandbox Code Playgroud)

但我已经看到,在O-LLVM项目中,他们使用以下方法实现了相同的目标:

clang -emit-llvm test.c -c -o test.bc -mllvm -fla
Run Code Online (Sandbox Code Playgroud)

有人能告诉我这里的-mllvm是什么,以及如何将其改为简单的命令?

llvm llvm-clang

1
推荐指数
1
解决办法
2077
查看次数

为什么模板函数不会出现在LLVM-IR中?

为什么模板函数在LLVM-IR中不显示,如果没有调用函数,从c ++代码发出LLVM IR,不像其他类型的函数(int,float ...)将出现在llvm ir示例中:以下函数func1不会在llvm ir中显示

template <class tmp>
tmp func1 () {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是这个功能func2总是在llvm ir中显示

int func2 () {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

c++ llvm llvm-clang llvm-ir

1
推荐指数
1
解决办法
471
查看次数

带有MSVC2015的Windows上的clang-tidy

我尝试clang-tidy在Windows 上使用-到目前为止没有成功。

作为前提,我已经安装了LLVM 3.9.1

我的常规编译器是MSVC 2015,我的构建系统是QBS 1.7.2。使用QBS我已经生成了compile_commands.json。当然,该文件包含MSVC 2015 cl.exe标志/参数。以下摘录显示了一个文件的条目:

{
    "arguments": [
        "C:/Programs/MVS14/VC/bin/amd64/cl.exe",
        "/nologo",
        "/c",
        "/EHsc",
        "/Zi",
        "/MDd",
        "/IC:\\some_ci_job_folder\\src\\some_component\\include",
        "/IC:\\some_ci_job_folder\\src\\some_needed_component\\include",
        "/IC:\\Programs\\Qt\\Online\\5.6\\msvc2015_64\\include",
        "/IC:\\Programs\\Qt\\Online\\5.6\\msvc2015_64\\include\\QtCore",
        "/IC:\\Programs\\Qt\\Online\\5.6\\msvc2015_64\\mkspecs\\win32-msvc2015",
        "/IC:\\some_ci_job_folder\\target\\build\\win64-vc14-qt56x-debug\\some_component.win64-vc14-qt56x.ce20db24\\qt.headers",
        "/D_MBCS",
        "/DWIN32",
        "/DQT_CORE_LIB",
        "/DNOMINMAX",
        "/DQT_DISABLE_DEPRECATED_BEFORE=0x000000",
        "/DVERSION_ID=\"MAJOR_UNDEF.MINOR_UNDEF-REVISION_UNDEF\"",
        "/DVERSION_MAJOR=0",
        "/DVERSION_MINOR=0",
        "/DVERSION_REVISION=0",
        "/DUSES_QT",
        "/D_DEBUG",
        "/D__mswin__",
        "/DUSE_RVALUE_REFS=1",
        "/D_CRT_SECURE_NO_DEPRECATE",
        "/D_SCL_SECURE_NO_WARNINGS",
        "/DWINVER=0x0502",
        "/D_WIN32_WINNT=0x0502",
        "/D_WIN32_WINDOWS=0x0502",
        "/TP",
        "/FS",
        "/Zm200",
        "/W4",
        "/FS",
        "/GR",
        "/wd4018",
        "/wd4063",
        "/wd4100",
        "/wd4121",
        "/wd4127",
        "/wd4150",
        "/wd4189",
        "/wd4238",
        "/wd4239",
        "/wd4244",
        "/wd4245",
        "/wd4267",
        "/wd4290",
        "/wd4389",
        "/wd4510",
        "/wd4512",
        "/wd4610",
        "/wd4718",
        "/wd4481",
        "/FoC:\\some_ci_job_folder\\target\\build\\win64-vc14-qt56x-debug\\some_component.win64-vc14-qt56x.ce20db24\\.obj\\f27fede2220bcd32\\foo.cpp.obj",
        "/FdC:\\some_ci_job_folder\\target\\build\\win64-vc14-qt56x-debug\\some_component.win64-vc14-qt56x.ce20db24\\.obj\\f27fede2220bcd32\\", …
Run Code Online (Sandbox Code Playgroud)

windows clang llvm-clang clang-tidy

1
推荐指数
1
解决办法
3005
查看次数

lang支持__null吗?

当我使用clang ++ 5.0版编译以下程序时,结果是

错误:函数的初始值设定项看起来不像纯说明符

extern void print(void *ptr);

#define NULL __null

class IInterface
{
public:
    virtual void method1() = NULL;
};


int main()
{
    void *ptr = NULL;
    print(ptr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

似乎__null不被clang支持吗?但是stackoverflow中的一些帖子建议clang支持__null。如果是这样,我为什么会收到此错误。有人可以建议这里发生了什么吗?

链接:https//godbolt.org/z/-f3Kf9

c++ llvm-clang clang++ c++14

1
推荐指数
1
解决办法
96
查看次数