Which -O is the default for clang?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Which -O is the default for clang?

David Blaikie via cfe-dev
Hi,

I don't see the manpage mentions which -O is the default for clang.
Does anybody know? Thanks.

   Code Generation Options
       -O0, -O1, -O2, -O3, -Ofast, -Os, -Oz, -Og, -O, -O4
              Specify which optimization level to use:
                 -O0 Means "no optimization": this level compiles the
fastest and generates the most debuggable code.

                 -O1 Somewhere between -O0 and -O2.

                 -O2 Moderate level of optimization which enables most
optimizations.

                 -O3  Like  -O2,  except  that  it  enables
optimizations  that take longer to perform or that may generate larger
code (in an attempt to make the program run
                 faster).

                 -Ofast Enables all the optimizations from -O3 along
with other aggressive optimizations that may violate strict compliance
with language standards.

                 -Os Like -O2 with extra optimizations to reduce code size.

                 -Oz Like -Os (and thus -O2), but reduces code size further.

                 -Og Like -O1. In future versions, this option might
disable different optimizations in order to improve debuggability.

                 -O Equivalent to -O2.

                 -O4 and higher
                     Currently equivalent to -O3

--
Regards,
Peng
_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Which -O is the default for clang?

David Blaikie via cfe-dev
If you don't set it, neither does the default clang driver.  You can tell this by running a the driver with the parameter -###, which will print the output.

The top of CompilerInvocation.cpp has the function that determines the optimization level based on the parameter to the CC1 invocation.  That should answer your questions about the different versions.  Note a handful of language options appear in the function so it isn't that easy of a question to just answer.

-----Original Message-----
From: cfe-dev [mailto:[hidden email]] On Behalf Of Peng Yu via cfe-dev
Sent: Tuesday, January 29, 2019 2:31 PM
To: cfe-dev <[hidden email]>
Subject: [cfe-dev] Which -O is the default for clang?

Hi,

I don't see the manpage mentions which -O is the default for clang.
Does anybody know? Thanks.

   Code Generation Options
       -O0, -O1, -O2, -O3, -Ofast, -Os, -Oz, -Og, -O, -O4
              Specify which optimization level to use:
                 -O0 Means "no optimization": this level compiles the fastest and generates the most debuggable code.

                 -O1 Somewhere between -O0 and -O2.

                 -O2 Moderate level of optimization which enables most optimizations.

                 -O3  Like  -O2,  except  that  it  enables optimizations  that take longer to perform or that may generate larger code (in an attempt to make the program run
                 faster).

                 -Ofast Enables all the optimizations from -O3 along with other aggressive optimizations that may violate strict compliance with language standards.

                 -Os Like -O2 with extra optimizations to reduce code size.

                 -Oz Like -Os (and thus -O2), but reduces code size further.

                 -Og Like -O1. In future versions, this option might disable different optimizations in order to improve debuggability.

                 -O Equivalent to -O2.

                 -O4 and higher
                     Currently equivalent to -O3

--
Regards,
Peng
_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
_______________________________________________
cfe-dev mailing list
[hidden email]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev