Laboratório de Compiladores

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

LLVM

LLVM demo

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
LLVM

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
LLVM

Psyche-c

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

View more
LLVM

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
LLVM

Rip-Rop Deducer

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

View more
LLVM

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
LLVM

Region Analysis

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

View more
LLVM

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
LLVM

Ranged Pointers

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

View more
LLVM

FlowTracker vs Ferrante

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

View more
LLVM

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
LLVM

LLVM demo

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

View more
LLVM

LLVM demo

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

View more