CS6843 Program Analysis: Assignments

Submit at moodle.

A1 (4 marks, due Jan 19, 2014 23:59)
Install LLVM 3.4 + Clang on Linux, compile.
Run existing analyses on the LLVM IR and gather statistics.

  1. Counts of various types of instructions (number of Add, Alloca, ... instructions)
  2. Dead code elimination (number of instructions DCE removes)
  3. Alias analysis (various statistics such as NoAlias responses, MayAlias responses, ...)
Note that you don't have to write any LLVM analysis for this assignment, you should simply try out various LLVM tools and options.
Submit file typescript generated by program script.

A2 (8 marks, due Feb 9, 2014 23:55)
Write an LLVM pass to perform inter-procedural, field-insensitive Andersen's inclusion-based points-to analysis.
The pass should output points-to information in the following format: pointername pointee1 pointee2 pointee3 ... one pointer per line.
Submission instructions will be posted on moodle.
Links: Online Andersen's Analysis, Ben Hardekopf's versions, Andersen's Analysis in LLVM

Optional, for fun: If you wish to challenge your code's performance, test it on SPEC 2006 benchmarks. To get the benchmarks, please get in touch with a TA.
If you can improve this performance substantially, get in touch with me.

A3 (13 marks, due Mar 2, 2014 23:55)
Write an LLVM pass to implement Ghiya and Hendren's shape analysis.
The expected output and the submission instructions would be posted on moodle.
Get going.

Optional, for fun: If you wish to challenge your code's performance and precision, test it on Olden benchmarks. If you can improve the precision or time on voronoi benchmark, get in touch with me.

MidSem will have questions based on assignments. Therefore, it would help if you submit the assignments sincerely.

course home page