草庐IT

llvm-gcc

全部标签

AVR-GCC 中的 C++ 标准合规性

我正在学习为我的Arduino编程,但我有相当扎实的C++背景,这意味着我很失望地发现我无法使用C++标准库。我一直在四处寻找,试图找出确切的原因,到目前为止,唯一合理的解释是AVR-GCC不符合C++语言标准。现在,我知道大多数编译器都与标准有细微的偏差,但我认为一定有一些非常大的东西将AVR-GCC与GCC、Clang或我以前使用过的任何其他编译器区分开来.就像一些完全缺失的非常重要的功能,或者什么的。例如,我不能使用std::vector肯定有充分的理由。它太有用了,不能无缘无故地离开。那是什么?AVR-GCC方言中使C++标准库无法在Arduino上运行的巨大漏洞是什么?我问这

c++ - llvm 异常 - RaiseException "?:Unknown signal"

我正在尝试使用llvm获取异常作为一个非常简单的示例,稍后我可以在此基础上进行构建,但我遇到了一些真正的困难,我不确定为什么。我得到clang给我以下llir代码,我正在将其传递给MCJIT;llvm-asc++exn.ll&&llvm-ld-nativec++exn.bc-lstdc++.6&&./a.out%"class.std::ios_base::Init"=type{i8}%"class.std::basic_ostream"=type{i32(...)**,%"class.std::basic_ios"}%"class.std::basic_ios"=type{%"clas

c++ - Apple GCC 4.2.1 将指针传递给构造函数

假设我有一个类并且它或其成员没有明显的问题,但是如果我尝试将几个类成员的地址传递给同一模块中的另一个类,第一个参数被正确传递,但是第二个总是NULL!怎么会这样?是否存在某种隐藏的堆栈/堆损坏或某种对齐问题?MSVC中没有问题,但是...classmyType2{charc1;charc2;}__attribute__((aligned(1)));//Yes,aligndiffersandIcan'tchangeitclassMyClass2{public:MyClass2(myType1*type1,myType2*type2,intdata){//type1anddataareok

c++ - SPARC : How to handle integer doubleword pairs? 的 GCC 内联汇编

据我了解,在SPARC中,32位整数存储在单个寄存器中,64位整数存储在相邻的寄存器对中,偶数寄存器包含高32位,奇数寄存器包含低位32位。我需要编写一些专门的SPARC内联汇编宏(内联汇编函数也可以)来处理64位整数双字对,但我不知道如何进行通用引用(使用GCC扩展内联汇编)到我的内联汇编中这对的两半。虽然我的汇编宏比下面显示的MULTIPLY()宏稍微复杂一点,但乘法示例(如果有效)将演示如何处理64位双字对的两半。谁能告诉我如何修复我的MULTIPLY()宏?以防万一,我在...bash-2.03$uname-aSunOS[...]5.8Generic_117350-39sun4

c++ - 与模板特化成为 friend 时可能出现 gcc 错误

在回答关于SO的另一个问题时,我遇到了一个有点可疑的gcc编译器错误。有问题的片段是templateclassA;templatevoidoperator*(A,A);templateclassA{friendvoid::operator*(A,A);...最后一行给出了著名的警告frienddeclaration'voidoperator*(A,A)'declaresanon-templatefunction稍后会导致硬错误。完整代码可见here.现在,问题是我认为这种行为不合适。[temp.friend]/1中的标准说:Forafriendfunctiondeclarationth

optimization - 有没有办法告诉 GCC 不要优化一段特定的代码?

我正在从事一个依赖编译器优化的项目,但我需要一些不被GCC优化的代码。这可能吗? 最佳答案 GCC4.4有一个属性:intfoo(inti)__attribute__((optimize("-O3")));记录在:https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Function-Attributes.html#index-g_t_0040code_007boptimize_007d-function-attribute-3195 关于optimi

c++ - 如何获取 llvm 内联 asm 操作数类型?

我正在从事一个关于LLVM的内联汇编的项目,但我遇到了一个关于汇编操作数的问题。例如,我有这样的代码:inta;intb;asm("nop":"=r"(a),"r"(b),"g"(30));我可以使用llvm::InlineAssembly::getAsmString()函数获取asm字符串“nop”,我还可以使用llvm::InlineAsm::ParseConstraints函数获取约束“rrimr”信息并迭代返回值。但我的问题是我无法获取asm操作数信息,尤其是asm操作数类型(a是整数类型,b是整数类型,30是常量int)。那么有人知道有什么方法可以获取asm操作数信息吗?

c++ - llvm 通过段错误 :(Core dumped)

我写了一个简单的llvmPass来计算C++源文件中的操作码。我对源文件没有任何问题,我已经成功地获取了它的.bc文件。现在,当我通过我的通行证运行它时,它崩溃了。pass的代码如下(源代码不是问题):#defineDEBUG_TYPE"opCounter"#include"llvm/Pass.h"#include"llvm/IR/Function.h"#include"llvm/Support/raw_ostream.h"#includeusingnamespacellvm;namespace{structCountOperands:publicFunctionPass{std::m

c++ - 编译嵌套参数包代码时出现 gcc 段错误

我试图编写一个代码(截至2014年1月使用mingw32gcc4.8.1)涉及两个参数包Args1...和Args2...。我在这里(http://en.cppreference.com/w/cpp/language/parameter_pack)了解到我需要一个嵌套类。Args1...和Args2...的长度相同(最终我希望从Args1推导出Args2......)。有时它们甚至可以是同一类型。所以我想为这个简单的案例编写一个速记using语句作为开始:templateusingzip_t=zip::with;但是,gcc在编译这条语句时会产生段错误。如果我做错了什么或者这是一个gc

c++ - GCC模板参数模板

我正在尝试使用模板的模板作为参数,当我用clang编译时一切正常,但是当我尝试使用GCC4.8时出现以下错误:can'tdeduceatemplatefor'TReceiver'fromnon-templatetype'DamageAnimationSystem'这是我的情况:我有一个程序,其中类可以为某些类型的事件订阅事件管理器,但不是全部。为此,我继承了一个具有特定类型的类:classDamageAnimationSystem:publicReceiver,publicReceiver在这里,我的类将监听“DamageEvent”和“HealthEvent”,因此我需要为此类事件声