Laboratório de Compiladores

Departamento de Ciência da Computação - Universidade Federal de Minas Gerais

InspectorJ

InspectorJ

InspectorJ is a tool that combines static flow analyses with dynamic checks in Java programs to automatically detect security vulnerabilities. It handles subtyping polymorphism and detects timing and command injection attacks. Also, the tool inserts instrumentation in Java programs to prevent the execution of unsafe parts of the code.

View more
FlowTracker

FlowTracker

Flow tracker is a tool that detects timing attack vulnerabilities in C/C++ programs that implement cryptographic routines. This page lets you run an online version of this tool.

View more
Project Jetson

Jetsons

A low-cost apparatus to measure energy consumption in programs running on the Nvidia TK1 Jetson board.

View more
Psyche-C

Psyche-c

Psyche-c is a tool that lets us compile C sources partially available.

View more
DawnCC

DawnCC

DawnCC is a tool that inserts OpenACC/OpenMP annotations automatically in C programs.

View more
Project Swan

LDP

Lightweight Dynamic Parallelism (LDP) is an extension to SPMD languages that allows for issuing kernels from within kernels -- akin to CUDA's dynamic parallelism, but at a low-cost.

View more
Enfield

Enfield

Enfield is an implementation of the Qubit Allocator.

View more
SIoT

SIoT

SIoT is a framework to analyze networked systems. On this page you can experience the SIoT providing programs that communicate over the network and getting information of the system as a whole.

View more
TaskMiner

TaskMiner

TaskMiner annotates programs automatically with OpenMP 4.5 pragmas for task parallelism.

View more
Restrictification

Restrictification

Restrictification is a static compiler optimization whose goal is to add the "restrict" keyword in function arguments of pointer type. This modification enables several other compiler optimizations, such as code hoisting, parallelization and better instruction scheduling.

View more
Pointer Analysis

Ranged Pointers

This page lets you run Range Based Alias Analysis (among others) implemented onto LLVM.

View more
Sparse Control Deps

FlowTracker vs Ferrante

This page lets you run Flow tracker's and Ferrante's analyses in order to compare them.

View more
ErrorProp

Error Analysis

Error Analysis is a program error verifier, that shows memory access, zero division errors, and the errors that derive from these previously shown ones.

View more
Etino

Etino

Etino is a tool that decides in which processor, within a heterogeneous architecture, each part of a program should run.

View more
RipRop

Rip-Rop Deducer

Rip-Rop Deducer is a static analysis that finds the highest density of return instructions possible in a program.

View more
Enfield

LLVM demo

This page lets you run compiler analyses and optimization implemented onto LLVM.

View more
Range Analysis

Region Analysis

Region analysis infers memory object sizes for pointers throughout the program.

View more
Hierarchical Access Policies Implementation

Hapi

A domain specific language to define access policies

View more