“ compiler-rt”运行时runtime库

编译器-rt项目包括:

  • Builtins-一个简单的库,提供了代码生成和其他运行时runtime组件所需的特定于目标的低级接口。例如,当为32位目标进行编译时,将双精度数转换为64位无符号整数将编译为对“ __fixunsdfdi”函数的运行时runtime调用。内置库以与目标无关的C形式或经过高度优化的程序集的形式提供了此示例和其他低级示例的优化实现。

内建函数为受支持的目标上的libgcc接口提供了全面支持,并为汇编中的常用功能(如__floatundidf)提供了高性能的手动调试实现,这些实现比libgcc实现快得多。通过添加内置目标来支持新目标应该很容易,因为该目标需要添加新的示例。

根据MIT许可证和UIUC许可证(类似于BSD的许可证),compiler-rt项目中的所有代码均具有双重许可

客户群

当前,Clang 和LLVM项目主要将editor -rt用作运行时runtime编译器支持库的实现。有关将C ++编译器与Clang一起使用的更多信息,请参见Clang 入门 文档。

平台支援

已知buildin可在以下平台上工作:

  • 硬件架构:i386,X86-64,SPARC64,ARM,PowerPC,PowerPC 64。
  • 操作系统:AuroraUX,DragonFlyBSD,FreeBSD,NetBSD,Linux,Darwin。

大多数sanitizer运行时runtime仅在Linux x86-64上受支持。有关更多详细信息,请参见Clang文档中特定于工具的文档。

源结构

编译器-rt的目录结构的简短说明:

为了进行测试,可以构建通用库和优化库。通过将优化版本覆盖到通用库上来形成优化库。当然,某些体系结构具有附加功能,因此优化库可能具有通用版本中找不到的功能。

  • include /包含可以包含在用户程序中的header(例如,用户可以直接从sanitizer运行时runtime调用某些函数)。
  • lib /包含库实现。
  • lib / builtins是内置示例的通用可移植实现。
  • lib / builtins /(arch)为支持的体系结构优化了某些示例的版本。
  • test /包含用于compile-rt运行时runtime的测试套件。

得到它并参与其中!

通常,需要构建LLVM / Clang才能构建Compiler-rt。可以将其与llvm和clang一起构建,也可以分别构建。

要将其构建在一起,只需将compile-rt添加到-DLLVM_ENABLE_PROJECTS =option to cmake。

要单独构建它,首先分别 构建LLVM 以获得llvm-config二进制文件,然后运行:

  • cd llvm-project
  • mkdir build-compiler-rt
  • cd build-compiler-rt
  • cmake ../compiler-rt -DLLVM_CONFIG_PATH = / path / to / llvm-config
  • make

sanitizer运行时runtime的测试已移植到 llvm-lit,并通过LLVM / Clang / compiler-rt构建树中的make check-all命令运行。

使用LLVM / Clang / compiler-rt或独立的compile-rt构建树中的make install命令将编译器RT库安装到系统中。

compile-rt没有自己的邮件列表,如果有任何疑问,请通过电子邮件发送llvm-dev邮件列表。提交到editor-rt SVN模块的信息将自动发送到 llvm-commits 邮件列表。

“ compiler-rt”运行时runtime库的更多相关文章

  1. iOS运行时Runtime浅析

    运行时是iOS中一个很重要的概念,iOS运行过程中都会被转化为runtime的C代码执行.例如[target doSomething];会被转化成objc)msgSend(target,@select ...

  2. CUDA运行时 Runtime(一)

    CUDA运行时 Runtime(一)             一. 概述 运行时在cudart库中实现,该库通过静态方式链接到应用程序库cudart.lib和libcudart.a,或动态通过cuda ...

  3. Deep Learning部署TVM Golang运行时Runtime

    Deep Learning部署TVM Golang运行时Runtime 介绍 TVM是一个开放式深度学习编译器堆栈,用于编译从不同框架到CPU,GPU或专用加速器的各种深度学习模型.TVM支持来自Te ...

  4. CUDA运行时 Runtime(四)

    CUDA运行时 Runtime(四) 一.     图 图为CUDA中的工作提交提供了一种新的模型.图是一系列操作,如内核启动,由依赖项连接,依赖项与执行分开定义.这允许定义一次图形,然后重复启动.将 ...

  5. CUDA运行时 Runtime(三)

    CUDA运行时 Runtime(三) 一.异步并发执行 CUDA将以下操作公开为可以彼此并发操作的独立任务: 主机计算: 设备计算: 从主机到设备的内存传输: 从设备到主机的存储器传输: 在给定设备的 ...

  6. CUDA运行时 Runtime(二)

    CUDA运行时 Runtime(二) 一. 概述 下面的代码示例是利用共享内存的矩阵乘法的实现.在这个实现中,每个线程块负责计算C的一个方子矩阵C sub,块内的每个线程负责计算Csub的一个元素.如 ...

  7. 【原】iOS动态性(五)一种可复用且解耦的用户统计实现(运行时Runtime)

    声明:本文是本人 编程小翁 原创,转载请注明. 为了达到更好的阅读效果,强烈建议跳转到这里查看文章. iOS动态性是我的关于iOS运行时的系列文章,由浅入深,从理论到实践.本文是第5篇.有兴趣可以看看 ...

  8. iOS 运行时runtime控制私有变量以及私有方法

    OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ...

  9. 【原】iOS动态性(二):运行时runtime初探(强制获取并修改私有变量,强制增加及修改私有方法等)

    OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法.利用runtime机制让我们可以在程序运行时动态修改类.对象中的所有属性.方法,就算是私有方法以及私有属性都是可以动 ...

随机推荐

  1. POJ2688状态压缩(可以+DFS剪枝)

    题意:       给你一个n*m的格子,然后给你一个起点,让你遍历所有的垃圾,就是终点不唯一,问你最小路径是多少? 思路:       水题,方法比较多,最省事的就是直接就一个BFS状态压缩暴搜就行 ...

  2. Windows下包管理工具Bower的安装和使用

    目录 安装Bower Bower的使用 安装Bower Windows下安装Bower之前,先安装好 nodejs 和 msysgit 环境 然后我们就可以使用npm包管理工具下载并全局安装bower ...

  3. Node-Web应用框架Express

    Express 是 node.js Web应用框架, 帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能的网站. Express 框架核心特性: ...

  4. 【python】Leetcode每日一题-不同的子序列

    [python]Leetcode每日一题-不同的子序列 [题目描述] 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数. 字符串的一个 子序列 是指,通过删除一些(也可以 ...

  5. 3 Java概述

    java三大版本 javase:标准版(桌面程序,控制台开发) javame:嵌入式开发(手机,家电)目前陨落 javaee:企业级开发(web端..) JDK和JRE 定义 JDK是开发工具包 Jr ...

  6. 注解配置定时器Scheduling

    注解配置定时器配置 package com.demo; import org.springframework.context.annotation.Configuration; import org. ...

  7. Spring Cloud Alibaba(8)---Feign服务调用

    Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...

  8. [刷题] PTA 02-线性结构1 两个有序链表序列的合并

    程序: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef int ElementType; 5 typedef st ...

  9. 怎么样在同一个word文件中删除不同节数的页眉

    1.双击页眉,进入页眉编辑状态2.选择准备删除页眉的节,直接额删除即可.注意:为不至于因该节的改动影响其他节的页眉,需要在页眉设置上,每节都要取消链接到前一节页眉 把那张的前面和后面都插入分隔符,在页 ...

  10. Ansible触发器-tag标签-忽略错误

    触发器 playbook handlers handler`用来执行某些条件下的任务,比如当配置文件发生变化的时候,通过notify触发handler去重启服务. 在saltstack中也有类似的触发 ...