ABCD: Eliminating Array Bounds Checks on Demand
来源:互联网 发布:高德地图端口修改工具 编辑:程序博客网 时间:2024/05/10 22:22
Abstract
Bounds overflow is one of the most frequently encountered errors in C programs. To guarantee type-safe execution, C and other typed languages require bounds checking of array accesses. Using existing powerful bounds-check optimizers at run time is not feasible, however, because they are too heavy-weight for the dynamic compilation setting. ABCD, is a light-weight algorithm for elimination of array bounds checking on demand, and its design emphasizes simplicity and efficiency.
Benefits to LLVM and LLVMers
ABCD algorithm is a light-weight method to check array bounds to eliminate both fully and partial redundant checks. Hence, if I implement it based on LLVM, LLVM will have the ability to do a light-weight check on array access. I want to write one or several passes to implement the algorithm, so perhaps people who want to do some research on checking out-of-bounds errors can be inspired from my project. They can add their own new contribution to increase the analysis accuracy, or use some of my passes to do a variety of their own jobs.
Deliverables
In my project, I plan to write several passes to implement the ABCD algorithm. So the following is necessary: (a) the pass(es) implementing the algorithm, (b) a document explaining the implementation, and (c) the benchmarks and the corresponding outcome for the implementation.
Project Details
ABCD, the algorithm I want to implement, is a light-weight algorithm for elimination of array bounds checking on demand, and its design emphasizes simplicity and efficiency. It works by adding a few edges to the SSA value graph and performing a simple traversal of the graph. A straightforward approach to detecting redundant checks is to construct a constraint system at each point, and then apply a theorem prover at the point of the bounds check. Both of these are expensive steps, so ABCD builds a single, program-point-independent constraint system, instead of constraint propagation, and performs a simple, demand-driven traversal of the sparse representation, instead of relying on a theorem prover. The entire ABCD algorithm contain mainly three components: (a) build the extension-SSA form, (b) build the inequality graph, and (3) remove the redundant checks.
Perhaps I don’t have enough time to implement both fully and partial redundant elimination of ABCD algorithm, but I promise I will implement the fully redundant elimination and do my best to implement the other part.
- ABCD: Eliminating Array Bounds Checks on Demand
- Windows Vista On Demand
- game on demand
- 视频点播 video on demand
- Loading Views On Demand
- On-Demand Resources Essentials
- initialization on demand holder
- On Demand Resources
- Globalize your On Demand Business
- Office Word 2007 On Demand
- Grid Computing (On Demand Series)
- Pass4Sure IBM On Demand Business
- Oracle CRM On Demand Reporting
- 1. On-demand Contact CenterServices
- Grails翻译 - Load On-Demand
- Demand paging on Nand Flash
- On-demand initializer for NSDateFormatter
- Manipulating Broadcast Receivers On Demand
- 在网页中用JS插入Flash的方法: SWFObject
- 花絮:摘抄的部分内容
- C#Socket通讯之超时检测
- getHibernateTemplate 与 getSession
- ASCII UniCode UTF-8
- ABCD: Eliminating Array Bounds Checks on Demand
- Latex 表格单元格内换行
- C#多线程学习(六) 互斥对象
- oracle自动查询脚本
- windows 7
- 随笔:SSI框架中iBATIS配置文件中sql标签配置的一点感触
- Top 100 Blogs for Development Managers
- 【原创】SSH开发框架中,实现系统启动加载类,读取数据库常用数据进入内存,利用Spring托管,并完成reload功能
- Update the SAFCode project to the new LLVM API