问题标签 [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.
gcc - 将参数或变量指定为 __attribute__ ((unused)) 是否允许编译器执行任何其他优化?
我对 LLVM 4.1 特别好奇,但也会对其他编译器的行为感兴趣。
根据GCC 文档(LLVM 至少部分支持),该unused
属性具有以下行为:
但是,如果编译器能够警告您未使用的参数和变量,那么它可能已经知道哪些参数和变量是未使用的,而无需您告诉它(特别是因为该unused
属性仅指示该变量可能未使用)。因此,该unused
属性是否允许编译器执行任何额外的优化,或者它的目的只是为了允许更多可读的代码?此外,如果该unused
属性确实允许编译器执行其他优化,那么如果您最终使用指定为的参数或变量会发生什么情况unused
?LLVM(在 XCode 中)似乎没有抱怨这种情况,尽管我可能没有在正确的优化级别进行编译或启用了正确的警告。
objective-c - Objective-C 代码分析
我想写一个工具来完成objective-c类名、选择器名和属性名的代码,因为软件正在开发中。(即可以定期运行并构建类名树及其属性/选择器的东西)。
有没有我可以使用的 API?. . 我正在查看 clang 静态分析器,但是从快速运行文档来看,我似乎需要一些更底层的东西。
c++ - 访问基类对象中的受保护成员
考虑:
第一个复制构造函数是正确的,因为权限基于类,而不是对象。所以我可以从我自己的类对象中访问受保护的成员。为什么第二个构造函数(或任何类似方法)会引发编译时错误?
简而言之:为什么 C++ 中的权限检查在这种情况下不考虑类继承规则?
在 Apple LLVM-4.2 中也遇到过这种情况,但在 Apple LLVM-4.1 中没有。
iphone - po 对象导致错误:找不到“$__lldb_objc_class”的接口声明
我在调试控制台中有这个奇怪的功能。
假设您有以下代码:
issueDictionary 函数的 po 正确:
{ 标题 = "2012 年 12 月"; coverUrl = "htt://toeete.com/CoverURL/77111a51-32d8-4c39-912e-a889bad250e6.png"; downloadUrl = "htt://oetoeto.com/pdfFile/TR 2012 年 12 月 Single.pdf"; “结束日期”=“2013 年 12 月 31 日”;图像 = ( ); “发布日期”=“2013 年 2 月 26 日”;摘要 =“2012 年 12 月号”;uniqueId = "2012 年 12 月_1"; 更新=“2013 年 2 月 11 日”;}
但是,每当我尝试打印“anIssue.issueID”或“[issueDictionary objectForKey:@"uniqueId"]”的对象时,它都会失败:错误:找不到'$__lldb_objc_class'的接口声明
说:
po [问题问题ID]
或者
po [issueDictionary objectForKey:@"uniqueId"]
两者都因错误而失败......虽然如果我
问题
成功了!!!!!!!!
: ID=2012 年 12 月_1 标题=2012 年 12 月发布=2013-02-25 22:00:00 +0000 免费=是 描述=2012 年 12 月发行
任何的想法
build - LLVM 3.3 的黄金插件
我构建了 LLVM 并正在使用它,现在我想添加 Gold 插件以用作链接器,我只是在 LLVM 网站上关注了“build gold with plugin support”,现在有了 ld-new 但我不想重新构建 LLVM ,有没有办法在不重建 LLVM 的情况下添加这个插件?
linker - 如何在 LLVM 3.2 和 Clang 3.3 中使用 Gold 进行链接时间优化?
llvm.org 上有关于如何将 Gold 插件添加到 LLVM-gcc 的说明;但是从 3.2 版开始,他们不再使用 LLVM-gcc,而是使用 Clang,并且不清楚如何使用它。
- 有谁知道如何将 Gold 插件添加到 LLVM 3.2?
- 我们是否需要安装这个插件,还是嵌入在 Clang 中?
我读过,如果您没有 Gold 插件作为链接器,如果您尝试-O4
使用 LTO,它会将其视为-O3
,但我想这是在您使用 gcc 系统链接器时而不是在使用 Clang 时,对吧?
macos - 未找到符号:MacOS 命令行工具中的 _objc_retainAutoreleasedReturnValue
有几个 问题的关键字与标题相同,但它们侧重于 Objective-C 的 iOS 端。我的问题是使用 MacOS 命令行工具。
基本上发生的事情是 Foundation (Cocoa) 工具调用了一个 C 函数,该函数最终调用了另一个 Foundation 方法。由于从 C 函数调用 Foundation 方法,这Symbol not found: _objc_retainAutoreleasedReturnValue
就是在运行时引发“”错误的地方。
代码如下所示:
日志.h
日志.m
主文件
ARC为64位编译工具开启(32位版本无法开启),最低支持MacOS版本为10.6。
在 MacOS 10.7 中调用该工具时,它会立即崩溃并显示如下日志:
我有根据的猜测(在其他人的帮助下)是我可能需要传入一个“ char *
”,或者我必须在某处将某些东西声明为“ _unsafe_unretained
”。这似乎是现代 Xcode 4.6 编译器应该为我处理的事情。
有人对我可能做错了什么有任何猜测吗?
ios - Apple LLVM 编译器错误 4.1 [-stdlib=libc++ 的部署目标无效]
谁能告诉我如何解决这个错误...我的 X-Code 是 4.5 版。我的 IOS 模拟器是 4.3 版
命令 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 失败,退出代码为 1
clang - UNREACHABLE 执行!尝试生成 PTX 时出错
我正在尝试使用 clang/LLVM 3.2 版为“nbody”示例程序的内核(nbody_kernel.cu)生成 PTX 代码。nbody CUDA 程序在 Nvidia 的 SDK 中可用。
我指的是https://github.com/jholewinski/llvm-ptx-samples项目。
以下是我的命令,
clang++ -O4 -S -I/usr/local/cuda/include -emit-llvm -target nvptx64 nbody_kernel.cu -o nbody_kernel.ll
选择 -O3 -loop-unroll -unroll-allow-partial nbody_kernel.ll -o nbody_kernel.ll
llc nbody_kernel.ll -o nbody_kernel.ptx
执行最后一个命令(llc)后,我执行了一个 UNREACHABLE !以下堆栈跟踪错误
我用 __builtin_ptx_read_tid_x() 等替换了全局索引,例如 threadIdx.x。生成 LLVM IR(即 .ll)没有问题。尝试使用 llc 从 IR 生成 PTX 时弹出错误。
关于这里可能发生的事情的任何指示?
python - 使用 Clang 绑定提取类型字符串
我正在编写一个 python 脚本(使用 python clang 绑定),它解析 C 头文件并提取有关函数的信息:名称、返回类型、参数类型。
提取函数名称没有问题,但我找不到将 a 转换clang.cindex.Type
为 C 类型字符串的方法。(例如clang.cindex.TypeKind.UINT
到unsigned int
)
目前,作为临时解决方案,我有一个字典clang.cindex.TypeKind -> C type string
和代码来处理指针和 const 限定符,但我没有找到提取结构名称的方法。
有没有一种通用的方法来获得 C 的定义clang.cindex.Type
?如果没有,我如何获取clang.cindex.TypeKind.RECORD
和clang.cindex.TypeKind.FUNCTIONPROTO
类型的 C 类型字符串?