Suppressing integral promotion in the Crossware 8051 C Compiler

by Crossware 22. February 2012 09:09

We have recently been asked how to put the /Op option on the command line of the Crossware 8051 C Compiler when building from within the Embedded Development Studio IDE.

We do not recommend that the /Op option is applied from the command line.  It can lead to unpredictable results and applying it across a whole module or a whole project can potentially lead to hard to track down faults.

Instead we recommend that it is applied to specific functions using the optimize pragma.

Here is the html version manual page for the /Op option:

http://www.crossware.com/smanuals/c8051/suppress.html

At the bottom of that page is a link to the page for the optimize pragma:

http://www.crossware.com/smanuals/c8051/optimize.html

So you would do something like this:

unsigned char a, b, c, d;

#pragma optimize("p", on)

func()
{
    a = (b + c) / d;
}

#pragma optimize( "", on )

In this example, only the expressions in the function func() will have integral promotion suppressed.


Nevertheless, it is possible to apply command line options that are not specifically supported by the IDE by using the CCommandLine entry in a target.ini file.  See this page:

http://www.crossware.com/smanuals/estudio/_t117.html

Tags:

Blog

About this blog

This is where you will find topical information that we think might be useful to you.

Month List