Sun Studio (software)
Encyclopedia
The Oracle Solaris Studio compiler suite is Oracle
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...

's flagship software development product for Solaris and Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

. It was formerly known as Sun Studio. The Oracle Solaris Studio software delivers optimizing C, C++, and Fortran compilers, libraries, and performance analysis, and debugging tools for the Solaris OS on SPARC, and both Solaris and Linux on x86/x64 platforms, including multi-core systems.

The Solaris Studio software suite is downloadable at no charge from the Solaris Studio download website.

Previous names of this product include Sun Studio, Sun WorkShop, Forte Developer, and SunPro Compilers.

Components

Oracle Solaris Studio is a suite of software products that includes:
  • C, C++, and Fortran compilers and support libraries;
  • DBX and frontends;
  • lint;
  • IDE based on NetBeans
    NetBeans
    NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...

    ;
  • Performance analyzer;
  • Thread analyzer;
  • Sun performance library;
  • Distributed make.

Compiler Optimizations
Compiler optimization
Compiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...

A common optimizing backend is used for code generation.

A high-level intermediate representation called Sun IR is used, and high-level optimizations done in the iropt (intermediate representation optimizer) component are operated at the Sun IR level. Major optimization
Compiler optimization
Compiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...

s include:
  • Copy propagation
    Copy propagation
    In compiler theory, copy propagation is the process of replacing the occurrences of targets of direct assignments with their values. A direct assignment is an instruction of the form x = y, which simply assigns the value of y to x.From the following code:...

  • Constant folding
    Constant folding
    Constant folding and constant propagation are related compiler optimizations used by many modern compilers. An advanced form of constant propagation known as sparse conditional constant propagation can more accurately propagate constants and simultaneously remove dead code.- Constant folding...

     and constant propagation
  • Dead code elimination
    Dead code elimination
    In compiler theory, dead code elimination is a compiler optimization to remove code which does not affect the program results. Removing such code has two benefits: it shrinks program size, an important...

  • Interprocedural analysis
    Interprocedural optimization
    Interprocedural optimization is a collection of compiler techniques used in computer programming to improve performance in programs containing many frequently used functions of small or medium length...

  • Loop optimization
    Loop optimization
    In compiler theory, loop optimization plays an important role in improving cache performance, making effective use of parallel processing capabilities, and reducing overheads associated with executing loops. Most execution time of a scientific program is spent on loops...

    s
  • Parallelization
    Automatic parallelization
    Automatic parallelization, also auto parallelization, autoparallelization, or parallelization, the last one of which implies automation when used in context, refers to converting sequential code into multi-threaded or vectorized code in order to utilize multiple processors simultaneously in a...

  • Profile-guided optimization
    Profile-guided optimization
    Profile-guided optimization is a compiler optimization technique in computer programming to improve program runtime performance. In contrast to traditional optimization techniques that solely use the source code, PGO uses the results of test runs of the instrumented program to optimize the final...

  • Scalar replacement
  • Strength reduction
    Strength reduction
    Strength reduction is a compiler optimization where expensive operations are replaced with equivalent but less expensive operations. The classic example of strength reduction converts "strong" multiplications inside a loop into "weaker" additions – something that frequently occurs in array...

  • vectorization (with -xvector=simd)

OpenMP

The OpenMP
OpenMP
OpenMP is an API that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most processor architectures and operating systems, including Linux, Unix, AIX, Solaris, Mac OS X, and Microsoft Windows platforms...

 shared memory parallelization API is native to all three Solaris Studio compilers.

gccfss

The gccfss (GCC for SPARC Systems) compiler uses gcc
GNU Compiler Collection
The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...

's front end and the Sun Studio compiler's code-generating back end. Thus, gccfss is able to handle gcc-specific compiler directives, while it is also able to take advantage of the compiler optimizations in the Sun Studio compiler's back end. This greatly facilitates the porting of GCC-based applications to SPARC systems.

gccfss 4.2 adds a new functionality as a cross compiler
Cross compiler
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is run. Cross compiler tools are used to generate executables for embedded system or multiple platforms. It is used to compile for a platform upon which it is not feasible to...

; SPARC binaries can be generated on an x86 (or x64) machine running Solaris.

Research platform

Before it's cancellation, the Rock processor
Rock processor
Rock was a multithreading, multicore, SPARC microprocessor developed at Sun Microsystems. Now canceled, it was a separate development from the CoolThreads/Niagara family of processors....

 would have been the first general-purpose processor to support hardware transactional memory (HTM), the Sun Studio compiler is used by a number of research projects, including Hybrid Transactional Memory (HyTM) and Phased Transactional Memory (PhTM) , to investigate support and possible HTM optimizations.

External links


Documentation

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK