From 482e7bddf617ae804dc47133cb07eb4aa81e45de Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 22 Dec 2012 14:58:30 +0000 Subject: Vendor import of llvm tags/RELEASE_32/final r170710 (effectively, 3.2 release): http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_32/final@170710 --- docs/ReleaseNotes.html | 288 +++++++++++++++------ include/llvm/MC/MCExpr.h | 6 +- lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp | 2 +- lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp | 3 +- lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h | 2 +- lib/MC/MCExpr.cpp | 4 + lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp | 4 + lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp | 10 +- lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h | 8 +- .../Mips/MCTargetDesc/MipsELFObjectWriter.cpp | 12 + lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h | 12 + lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp | 12 + lib/Target/Mips/Mips64InstrInfo.td | 2 + lib/Target/Mips/MipsCodeEmitter.cpp | 116 +-------- lib/Target/Mips/MipsISelLowering.cpp | 261 ++++++++----------- lib/Target/Mips/MipsInstrInfo.td | 2 + lib/Target/Mips/MipsJITInfo.cpp | 15 +- lib/Target/Mips/MipsJITInfo.h | 7 +- lib/Target/Mips/MipsMCInstLower.cpp | 4 + lib/Transforms/Scalar/SROA.cpp | 7 +- test/CodeGen/Mips/biggot.ll | 50 ++++ test/MC/Mips/xgot.ll | 42 +++ test/Transforms/SROA/basictest.ll | 42 +++ test/Transforms/SROA/big-endian.ll | 9 +- 24 files changed, 565 insertions(+), 355 deletions(-) create mode 100644 test/CodeGen/Mips/biggot.ll create mode 100644 test/MC/Mips/xgot.ll diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index a4b1d580b637..a4c5960c1555 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -29,12 +29,6 @@

Written by the LLVM Team

-

These are in-progress notes for the upcoming LLVM 3.2 -release.
-You may prefer the -LLVM 3.1 -Release Notes.

-

Introduction @@ -46,7 +40,7 @@ Release Notes.

This document contains the release notes for the LLVM Compiler Infrastructure, release 3.2. Here we describe the status of LLVM, including major improvements from the previous release, improvements in various - subprojects of LLVM, and some of the current users of the code. All LLVM + sub-projects of LLVM, and some of the current users of the code. All LLVM releases may be downloaded from the LLVM releases web site.

@@ -72,11 +66,12 @@ Release Notes.
-

The LLVM 3.2 distribution currently consists of code from the core LLVM - repository, which roughly includes the LLVM optimizers, code generators and - supporting tools, and the Clang repository. In addition to this code, the - LLVM Project includes other sub-projects that are in development. Here we - include updates on these subprojects.

+

The LLVM 3.2 distribution currently consists of production-quality code + from the core LLVM repository, which roughly includes the LLVM optimizers, + code generators and supporting tools, as well as Clang, DragonEgg and + compiler-rt sub-project repositories. In addition to this code, the LLVM + Project includes other sub-projects that are in development. Here we + include updates on these sub-projects.

@@ -90,18 +85,18 @@ Release Notes.

experience through expressive diagnostics, a high level of conformance to language standards, fast compilation, and low memory use. Like LLVM, Clang provides a modular, library-based architecture that makes it suitable for - creating or integrating with other development tools. Clang is considered a - production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86 - (32- and 64-bit), and for Darwin/ARM targets.

+ creating or integrating with other development tools.

In the LLVM 3.2 time-frame, the Clang team has made many improvements. Highlights include:

For more details about the changes to Clang since the 3.1 release, see the - Clang release + Clang 3.2 release notes.

If Clang rejects your code but another compiler accepts it, please take a @@ -129,7 +124,10 @@ Release Notes.

The 3.2 release has the following notable changes:

@@ -141,7 +139,8 @@ Release Notes.
-

The new LLVM compiler-rt project + +

The LLVM compiler-rt project is a simple library that provides an implementation of the low-level target-specific hooks required by code generation and other runtime components. For example, when compiling for a 32-bit target, converting a @@ -153,7 +152,11 @@ Release Notes.

The 3.2 release has the following notable changes:

@@ -174,7 +177,9 @@ Release Notes.

The 3.2 release has the following notable changes:

@@ -193,7 +198,15 @@ Release Notes.

Within the LLVM 3.2 time-frame there were the following highlights:

@@ -212,7 +225,7 @@ Release Notes.

The 3.2 release has the following notable changes:

@@ -227,16 +240,61 @@ Release Notes.

Polly is an experimental optimizer for data locality and parallelism. It currently provides high-level - loop optimizations and automatic parallelisation (using the OpenMP run time). + loop optimizations and automatic parallelization (using the OpenMP run time). Work in the area of automatic SIMD and accelerator code generation was started.

Within the LLVM 3.2 time-frame there were the following highlights:

+ + + + +

+Clang Static Analyzer +

+ +
+ +

The Clang Static Analyzer + is an advanced source code analysis tool integrated into Clang that performs + a deep analysis of code to find potential bugs.

+ +

In the LLVM 3.2 release, the static analyzer has made significant improvements + in many areas, with notable highlights such as:

+ + + +

The release specifically includes notable improvements for Objective-C analysis, including:

+ + + +

The release specifically includes notable improvements for C++ analysis, including:

+ + +

Finally, this release includes many small improvements to scan-build, which can be used to drive the analyzer from the command line or a continuous integration system. This includes a directory-traversal issue, which could cause potential security problems in some cases. We would like to acknowledge Tim Brown of Portcullis Computer Security Ltd for reporting this issue.

+
@@ -265,6 +323,19 @@ Release Notes. +

EmbToolkit

+ +
+ +

EmbToolkit provides Linux cross-compiler + toolchain/SDK (GCC/binutils/C library (uclibc,eglibc,musl)), a build system for + package cross-compilation and optionally various root file systems. + It supports ARM and MIPS. There is an ongoing effort to provide a clang+llvm + environment for the 3.2 releases, +

+ +
+

FAUST

@@ -274,7 +345,7 @@ Release Notes. AUdio STream. Its programming model combines two approaches: functional programming and block diagram composition. In addition with the C, C++, Java, JavaScript output formats, the Faust compiler can generate LLVM bitcode, and - works with LLVM 2.7-3.1.

+ works with LLVM 2.7-3.2.

@@ -331,7 +402,11 @@ Release Notes.

OSL was developed by Sony Pictures Imageworks for use in its in-house renderer used for feature film animation and visual effects, and is - distributed as open source software with the "New BSD" license.

+ distributed as open source software with the "New BSD" license. + It has been used for all the shading on such films as The Amazing Spider-Man, + Men in Black III, Hotel Transylvania, and may other films in-progress, + and also has been incorporated into several commercial and open source + rendering products such as Blender, VRay, and Autodesk Beast.

@@ -367,7 +442,7 @@ Release Notes. C++, Fortran and Faust code in Pure programs if the corresponding LLVM-enabled compilers are installed).

-

Pure version 0.54 has been tested and is known to work with LLVM 3.1 (and +

Pure version 0.56 has been tested and is known to work with LLVM 3.2 (and continues to work with older LLVM releases >= 2.5).

@@ -432,7 +507,9 @@ Release Notes.

LLVM 3.2 includes several major changes and big features:

@@ -451,7 +528,10 @@ Release Notes. @@ -489,23 +569,33 @@ Release Notes.

-

SROA - We've re-written SROA to be significantly more powerful. -

+

SROA - We’ve re-written SROA to be significantly more powerful and generate +code which is much more friendly to the rest of the optimization pipeline. +Previously this pass had scaling problems that required it to only operate on +relatively small aggregates, and at times it would mistakenly replace a large +aggregate with a single very large integer in order to make it a scalar SSA +value. The result was a large number of i1024 and i2048 values representing any +small stack buffer. These in turn slowed down many subsequent optimization +paths.

+

The new SROA pass uses a different algorithm that allows it to only promote to +scalars the pieces of the aggregate actively in use. Because of this it doesn’t +require any thresholds. It also always deduces the scalar values from the uses +of the aggregate rather than the specific LLVM type of the aggregate. These +features combine to both optimize more code with the pass but to improve the +compile time of many functions dramatically.

@@ -524,8 +614,19 @@ Release Notes. Intro to the LLVM MC Project Blog Post.

- + @@ -733,10 +880,6 @@ Release Notes.

The TargetData structure has been renamed to DataLayout and moved to VMCore to remove a dependency on Target.

- - @@ -746,33 +889,22 @@ to remove a dependency on Target.

-

In addition, some tools have changed in this release. Some of the changes - are:

- - - -
- - - -

-Python Bindings -

- -
- -

Officially supported Python bindings have been added! Feature support is far - from complete. The current bindings support interfaces to:

+

In addition, some tools have changed in this release. Some of the changes are:

-

@@ -794,7 +926,7 @@ to remove a dependency on Target.

Known problem areas include: