小编kpd*_*dev的帖子

如何安装clang预构建的二进制文件ubuntu 12.04

我是linux的新手,不知道我需要把Clang预先构建的二进制文件http://llvm.org/releases/download.html#3.3放在哪里 .我下载它,用鼠标解压缩,并将/ bin的路径添加到我的$ PATH,并将/ lib的路径添加到$ LD_LIBRARY_PATH,并将带有my/lib路径的*.conf添加到/etc/ld.so.conf.d .我甚至重启笔记本电脑.
...但仍然无法使用Code :: Blocks GCC构建我的简单程序(错误:/home/aadgrand/tmp/LLVM-3.3/final/llvm.src/lib/Support/Signals.cpp - 对'dladdr'的未定义引用).测试程序的文本:

#include <iostream>
#include "llvm/IR/Module.h"
#include "llvm/IR/LLVMContext.h"
using namespace std;

int main()
{
    llvm::LLVMContext &c = llvm::getGlobalContext(); // error line
    cout << "Never printed" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我还需要做什么?也许我需要使用*.sig文件?嗯?

如何使用预编译二进制文件安装CLang相同的问题.很抱歉重复,但它真的非常有趣和重要.

=====更新======

我刚刚安装了llvm-3.1,与llvm-3.4相同的错误(来自预先构建的二进制文件):

-------------- Build: Debug in test2 ---------------

Compiling: main.cpp
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib …
Run Code Online (Sandbox Code Playgroud)

ubuntu llvm

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

为什么GCC在不使用Clang的地方插入mfence?

为什么GCC和Clang会为此代码(x86_64,-O3 -std = c ++ 17)生成如此不同的asm?

#include <atomic>

int global_var = 0;

int foo_seq_cst(int a)
{
    std::atomic<int> ia;
    ia.store(global_var + a, std::memory_order_seq_cst);
    return ia.load(std::memory_order_seq_cst);
}

int foo_relaxed(int a)
{
    std::atomic<int> ia;
    ia.store(global_var + a, std::memory_order_relaxed);
    return ia.load(std::memory_order_relaxed);
}
Run Code Online (Sandbox Code Playgroud)

GCC 9.1:

foo_seq_cst(int):
        add     edi, DWORD PTR global_var[rip]
        mov     DWORD PTR [rsp-4], edi
        mfence
        mov     eax, DWORD PTR [rsp-4]
        ret
foo_relaxed(int):
        add     edi, DWORD PTR global_var[rip]
        mov     DWORD PTR [rsp-4], edi
        mov     eax, DWORD PTR [rsp-4]
        ret
Run Code Online (Sandbox Code Playgroud)

铛8.0:

foo_seq_cst(int):                       # @foo_seq_cst(int)
        mov …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading gcc atomic clang

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

LLVM.如何根据名称访问struct字段?

我在C++中有一些示例代码:

struct RecordTest
{
    int value1;
    int value2;
};

void test()
{
    RecordTest rt;
    rt.value1 = 15;
    rt.value2 = 75;
}
Run Code Online (Sandbox Code Playgroud)

和LLVM 3.4 IR:

%struct.RecordTest = type { i32, i32 }

; Function Attrs: nounwind
define void @_Z4testv() #0 {
entry:
  %rt = alloca %struct.RecordTest, align 4
  %value1 = getelementptr inbounds %struct.RecordTest* %rt, i32 0, i32 0
  store i32 15, i32* %value1, align 4
  %value2 = getelementptr inbounds %struct.RecordTest* %rt, i32 0, i32 1
  store i32 75, i32* %value2, align …
Run Code Online (Sandbox Code Playgroud)

llvm llvm-c++-api

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

LLVM.是否可以使用SwitchInst设置范围标签?

我知道如何用LLVM API(特别是SwitchInst)编译这样的代码:

switch (h)
{
case 11:
   .......
case 22:
   ........
}
Run Code Online (Sandbox Code Playgroud)

但我不知道,是否可以使用SwitchInst编译这样的代码:

  Select Case x
     Case 11 To 40
        ...........
     Case 41 To 70
        ...........
  End Select
Run Code Online (Sandbox Code Playgroud)

如何设置远程案例标签?

switchOperator->addCase(...What I need to put here?..)
Run Code Online (Sandbox Code Playgroud)

llvm

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

标签 统计

llvm ×3

atomic ×1

c++ ×1

clang ×1

gcc ×1

llvm-c++-api ×1

multithreading ×1

ubuntu ×1