问题标签 [llvm-clang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
makefile - Clang++ -c 将文件输出到错误的目录
我有这个包含以下步骤的 makefile 目标:
出于某种原因,Clang 将构建文件输出到BASE_DIR
,而不是GRAPHICS_BUILD_DIR
. 一切都编译得很好,当我手动一次执行一行时,它工作正常,*.o
文件输出到正确的目录中。
为什么不将这些文件放在正确的目录中,我该如何强制它?
我在 ubuntu linux 内核 3.2.0-26 上使用 clang3.1 和当前版本的 GNUMake。
objective-c - 为 Objective-C 配置 TextMate 以运行 clang 而不是 gcc
我正在运行最新的 TextMate 1.5(在 OSX Lion 上)并安装了最新的 XCode 4.3。在学习 Objective-C 时,我有点走低路,绕过 XCode 开始并使用 TextMate 和命令行进行简单的示例和练习。在 TextMate 中点击 Cmd-R 时,(控制台)会构建并运行类型化的 Objective-C 控制台程序。但是,它不会编译它应该(从我的 POV)编译的东西,因为使用 clang 从命令行编译它们可以正常工作。当我从命令行切换到构建时,我发现当我使用 gcc 而不是 clang 时,同样的事情会失败。
我的问题是 - 当我为 Objective-C (.m) 源文件点击 Cmd-R 时,如何说服 TextMate 使用 clang 而不是 gcc?
(我翻遍了捆绑设置,但无济于事,用谷歌搜索,等等。所以它一定是我想念的简单的东西,或者没有人想那样做。我假设是第一个。)
PS 几周前我从 Windows 转换过来,所以不要以为我是 Mac 专家。
ios - “clang 意外退出”(xcode 崩溃)
当我尝试分析我的代码(产品 -> 分析)时,xcode 崩溃,标题为“clang quit unexpectedly”
进程:clang [10074] 路径:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 标识符:clang 版本:3.1 (318.0.61) 代码类型:X86-64 (Native)父进程:clang [10073]
日期/时间:2012-07-13 18:46:29.862 +0100 操作系统版本:Mac OS X 10.7.4 (11E53) 报告版本:9
自上次报告以来的间隔:140604 秒自上次报告以来崩溃:自上次报告以来每个应用程序崩溃 50 次:39 匿名 UUID:E974A614-4831-478E-8B68-8FE005A98F19
崩溃的线程:0 调度队列:com.apple.main-thread
异常类型:EXC_BAD_ACCESS (SIGSEGV) 异常代码:0x0000000000000000 处的 KERN_INVALID_ADDRESS
靠近 0 的 VM 区域:--> __TEXT 000000010180f000-00000001029c8000 [17.7M] rx/rwx SM=COW /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
线程0失事::调度队列:com.apple.main线程0铛0x00000001018dc780铛::语句:: getSourceRange()const的+ 16 1铛0x00000001021ce0c6 _ZL22getValidSourceLocationPKN5clang4StmtEN4llvm12PointerUnionIPKNS_15LocationContextEPNS_19AnalysisDeclContextEEE + 86 2铛0x00000001021ce5d3铛:: ento :: PathDiagnosticLocation :: genLocation( clang::SourceLocation, llvm::PointerUnion) const + 35
我的客人是因为 LLVM 吗?我有Apple LLVM 编译器 3.1
谢谢!
编辑: Xcode 版本 4.3.3 (4E3002)
objective-c - 如果不是 -O0,则 ObjC / Clang 优化外壳崩溃
clang
做了哪些优化-O1
?一旦显然执行任何优化,我尝试调试的代码就会失败。是-O1
我可以一个一个尝试的标志集合吗?
objective-c - 静态分析和“创建规则”
我想在 NSBezierPath 上添加一个类别以返回路径的 CGPathRef。由于这是一个核心基础对象,我不能自动释放它,方法的调用者负责释放它。通过将“复制”或“创建”作为方法名称的一部分,我认为我遵循 Apple 在此处设置的约定:https ://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/ CFMemoryMgmt/Concepts/Ownership.html
但是,除非我更进一步,否则静态分析器不会接受它,而且——不仅包括 create/copy 作为名称的一部分,而且——实际上以“copy”(或 mutableCopy 等)开头的方法名称。
但是,这样做违反了命名类别方法的最佳实践,因为它们应该加前缀以避免命名冲突。
实现以下所有目标的最佳方法是什么:
- 在 Cocoa 类的类别上添加方法
- …返回一个核心基础对象
- …这不会在分析器中发出警告
- …并根据最佳实践命名?
c - 为什么编译器生成的代码会一遍又一遍地在相同的内存位置写入相同的内容?
clang
我使用and编译了以下代码,gcc
并使用-O3
:
这是生成的主要函数gcc
(最后没有 NOP):
这是来自clang
:
我的问题是:他们都生成代码,一遍又一遍地在堆栈上写入静态字符串的地址,是否有充分的理由?例如,为什么clang
生成的代码看起来不像这样?
cuda - 用clang编译CUDA
我是 LLVM 新手。听说clang支持CUDA。如何使用 clang 编译 CUDA?我是否必须进行一些配置更改或包含任何特定的头文件?我在网上找不到有关此的任何信息。有可能吗?
现在,当我尝试使用 clang 编译一个虚拟 cuda 程序时
我收到以下错误
任何帮助表示赞赏!顺便说一句,我在 Mac 上运行它。
xcode - Xcode 4.4 Lion 在 C++ 中使用 GCC 与 LLVM 的换行行为不一致
多年来,我一直在使用以下代码来使用 cin 和包括下一个换行符的字符。
我会在捕获异常并清除 cin 状态后调用它,如下所示:
cin 的下一次读取将剩余的换行符作为空格跳过。
我刚刚在 Lion 下更改为 Xcode 4.4.1。使用 LLVM GCC 4.2 GNU++98、libstdc++(GNU C++ 标准库),它像往常一样工作。
但是使用 Apple LLVM Compiler 4.0、c++11、libc++(支持 C++11 的 LLVM C++ 标准库),识别换行符似乎存在多个问题。与上面相同的代码需要第二次返回键来满足循环!替代方案也会出现同样的问题:
最后,在 while 循环中使用 getchar 而不是 cin.get() 就像往常一样工作!
这是 libc++ 中的错误吗?还是我错过了 Xcode 或 C++11 中的某些内容?
作为对 Howard Hinnant 的回应,这里有一个小测试用例,它显示了图片中没有任何异常等情况下发生的情况:
}
它读取并保存整数,直到它保存一个 3,然后它通过下一个换行符读取并丢弃,然后重复整个过程,因此您可以看到 3 之后的内容从输入流中丢弃。使用 Xcode 4.4.1 Lion 和 GNU++98 || GNU++11,libstd++,当我输入这两行时,我得到了我所期望的结果,每行都以空格结尾,然后是一个 RETURN 键击:
我进入Xcode的输出窗口:
但是对于 C++11,libc++,在我输入 SECOND RETURN 击键之前,第一行什么都没有发生,在两行输入之后,但仍然发生了正确的丢弃。因此,每行输入后下方的额外空间就是第二次击键的样子。
使用上面的 cin.ignore 调用而不是围绕 cin.get() 的 while 循环会发生完全相同的行为。所以问题是“为什么需要第二次 RETURN 键击?”
llvm - 在 LLVM 中查找特定变量的所有用途
我对 LLVM 很陌生。
我正在尝试编写一个 llvm Pass 来执行类似于污点分析的操作。在我的努力中,我需要遍历特定预定义变量的 Def-use 链。例如一个C程序的反汇编代码如下
这是在一个函数上方找到的,我想在我的函数中找到这个 @someVar 的所有用途。我该怎么做?我开始编写函数传递。但是如何获得这个特定标识符的 Def Use 链呢?
我在 LLVM 手册http://llvm.org/docs/ProgrammersManual.html#iterate_chains中找到了这个。
但我不确定如何在这种情况下使用它。
PS对不起,如果我的问题含糊不清或幼稚。我是新手,我不知道什么信息是相关的。
cygwin - speak.js 在 windows 中的编译问题
我在尝试编译时遇到了这个问题speak.js
。当emscripten.sh
编译器到达这一行时:
我收到此错误(以前的部分工作正常):
我在 Windows 7 下运行 cygwin;所有 emscripten 健全性检查工作正常,我尝试将 emscripten /tmp 配置(主文件夹中的 .escripten)更改为多个值,授予权限等。似乎从未创建临时文件,所以当它尝试再次访问它时,它打破了。
欢迎任何帮助/指导/建议。