小编Che*_*ath的帖子

对于LLVM,SCC代表什么?

我正在阅读这份文件http://llvm.org/docs/WritingAnLLVMPass.html,在那里我遇到了CallGraphSCCPass.我搜索了SCC的缩写,但是找不到.SCC代表什么?我在哪里可以阅读更多相关信息?

compiler-construction llvm

18
推荐指数
2
解决办法
3785
查看次数

在LLVM指令中获取操作数

我正在为我的编译器编写一个优化,我使用LLVM IR作为我的中间语言.我解析了输入文件并将其转换为LLVM IR.在优化期间,我需要检索指令的操作数.我能够getOpCode()Instruction类中找到,但无法检索操作数列表.我该怎么做?

llvm

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

在64位Linux机器上的gcc中创建'long'4个字节

我正在努力将应用程序移植到Linux平台上的64位.该应用程序目前在Linux,Windows,Mac 32位和Windows 64位上受支持.我们经常遇到的问题之一是对int使用long,反之亦然.直到现在这都不是问题,因为long和int在当前支持应用程序的平台中是可互换的(都是4个字节).代码库是一个巨大的代码库,许多遗留代码都带有#defines用于许多数据类型,这使得搜索所有long的使用并使用int适当替换很麻烦.

  1. 作为一个短期解决方案,有没有办法让GCC使用4个字节而不是8个"长"?
  2. 如果有,我们可能面临哪些问题?如果没有,是否有更简单的方法来解决long和int问题?

linux 64-bit gcc long-integer

11
推荐指数
2
解决办法
7389
查看次数

在函数调用上调用sizeof会跳过实际调用函数!}

我碰巧偶然发现了这段代码.

int x(int a){
    std::cout<<a<<std::endl;
    return a + 1;
}

int main()
{
    std::cout<<sizeof(x(20))<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我预计它打印20跟随4.但它只是打印4.为什么会这样?优化函数是不正确的,有副作用(打印到IO /文件等)?

c++ sizeof

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

C中的<:语法有什么意义?

可能重复:
<:无法开始模板参数列表

你知道吗

int a<:10:>;
Run Code Online (Sandbox Code Playgroud)

相当于

int a[10];
Run Code Online (Sandbox Code Playgroud)

我正在编写一些代码,其中我有一个全局命名空间和一个受限制的命名空间,现在说NS1.我在我的全局命名空间中有一个名为Module的类,我在NS1中导入了一些其他库,它们也有一个名为Module的类.我试图创建我的模块的std :: list,即在NS1中的一个函数内部的:: Module,这样做,我得到了这个编译错误

std::list<::Module*> &myModule;

genllvm.cpp:60:11: error: ‘<::’ cannot begin a template-argument list
./genllvm.cpp:60:11: note: ‘<:’ is an alternate spelling for ‘[’. Insert whitespace between ‘<’ and ‘::’
./genllvm.cpp:60:11: note: (if you use ‘-fpermissive’ G++ 
Run Code Online (Sandbox Code Playgroud)

这个"<:"语法有什么意义?

c c++ gcc

4
推荐指数
2
解决办法
773
查看次数

当所需的内核内存超过1 GB时会发生什么

作为Daniel和Marco在“了解Linux内核”课程中的一部分,我试图理解Linux中的“内存管理”。以下是我对内核空间的理解

  1. 在32位计算机上,每个进程都有4GB的虚拟地址空间。3GB-用户和1GB-内核空间。
  2. 1 GB在进程之间共享,并直接映射到1 GB RAM。该空间用于存储内核代码,页面表等。
  3. 1 GB无法换出。虽然,它可以被释放。

我的问题是,如果进程所需的总内核空间超过1 GB,该怎么办?

memory-management linux-kernel

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

为什么构造函数优先于用户定义的运算符?

我正在尝试理解static_cast.我有两个课程FromTo.我正在尝试将From转换为To.我有一个构造函数的是需要.我还有一个用户定义的转换运算符,用于将From对象转换为To.为什么构造函数优先于赋值运算符?

class From;
class To
{
public:
    int y;
    To() { cout << "In To default constructor" << endl; }
    To(const To& sl2) { cout << "In To copy constructor" << endl; }
    void operator=(const To& sl2) { cout << "In To assignment operator" << endl; }
    ~To() { cout << "In To destructor" << endl; }
    To(const From& sl1) { cout << "In …
Run Code Online (Sandbox Code Playgroud)

c++

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

构建llvm 3.0时出错

我试图在我的机器上获得llvm 3.0,但是当我给make -k时,我得到以下错误.

chethan@ubuntu:~/llvm-3.0$ make
make[1]: Entering directory `/home/chethan/llvm-3.0/lib/Support'
llvm[1]: Compiling APFloat.cpp for Release build
In file included from APFloat.cpp:15:
In file included from /home/chethan/llvm-3.0/include/llvm/ADT/APFloat.h:104:
In file included from /home/chethan/llvm-3.0/include/llvm/ADT/APInt.h:18:
In file included from /home/chethan/llvm-3.0/include/llvm/ADT/ArrayRef.h:13:
In file included from /home/chethan/llvm-3.0/include/llvm/ADT/SmallVector.h:17:
/home/chethan/llvm-3.0/include/llvm/Support/type_traits.h:20:10: fatal error: 'utility' file not found
#include <utility>
     ^
1 error generated.
make[1]: *** [/home/chethan/llvm-3.0/lib/Support/Release/APFloat.o] Error 1
make[1]: Leaving directory `/home/chethan/llvm-3.0/lib/Support'
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)

我按照这些步骤在我的机器上构建llvm.

  1. 从llvm下载页面获取llvm源zip文件并解压缩到文件夹llvm-3.0
  2. cd /home/chethan/llvm-3.0
  3. ./配置
  4. 制作-k

虽然在这种情况下,我只是给了'make',以便在第一次出错时停止.我在我的机器上安装了llvm-gcc 4.2.

今天早上我在家用机器上执行了相同的步骤,并成功构建了llvm-3.0!知道这里可能缺少什么吗?

llvm

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