What is dco?

dco may be regarded as a compiler post processor - it takes assembly file generated by the compiler and optimizes it producing an assembly file logically equivalent to the original one. The package is written in C++ incorporating object-oriented design principles which makes it possible to retagret it to optimize different targets and to port it to run on various systems - see this for information about porting of our optimization technology to a processor of your choice.
top

Is it still necessary to use compiler optimizations?

Yes it is. dco is expecting high quality optimized code as it input; it doesn't attempt to perform optimizations that are known to be done by a compiler. Therefore using dco to optimize the output of compilation generated without compiler optimizations and then comparing it to the code generated by a compiler with optimizations turned on is not appropriate ( that is often done by customers trying to "evaluate" dco and concluding that "compiler does a better job" ).
top

Will dco optimize all my code?

Probably not. However it might optimize enough to be useful ( see this for some results ).
top

What kind of applications dco is tuned to optimize?

The current release of the optimizer is tuned to optimize gcc-generated double precision numeric code.
top

Is dco capable to optimize code that has SIMD instructions?

Yes, such a code can be successfully optimized by dco - see this for example.
top

How do I use dco?

First use your gcc compiler to generate assembly code of a program ( see this on how can it be done and this on a compiler options to choose ). Then apply dco to generated assembly code ( see this on how can it be done and this on dco's command line options to choose ).
top

How was dco tested?

dco was tested by verifying many many programs from the great number of validation suits, benchmarks and applications. Each verified program was compiled and executed, optimized by dco, executed again and the execution results of the compiler generated code and the dco optimized code were verified for the exact match. gcc versions 4.3.2, 4.4.1 and 4.5.0 were used to compile every verified program. For every verified program and every gcc compiler used in verification, the process was repeated with different compilation and dco command line options.
top