Last Comment Bug 511791 - configure and PGO fail with ICC
: configure and PGO fail with ICC
Status: RESOLVED FIXED
:
Product: Core
Classification: Components
Component: Build Config (show other bugs)
: Trunk
: x86 Mac OS X
: -- normal (vote)
: mozilla1.9.3a1
Assigned To: Ted Mielczarek [:ted.mielczarek]
:
Mentors:
Depends on:
Blocks: C192ConfSync
  Show dependency treegraph
 
Reported: 2009-08-20 17:08 PDT by Andreas Gal :gal
Modified: 2011-12-20 23:19 PST (History)
3 users (show)
bugzillamozillaorg_serge_20140323: in‑testsuite-
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
step 1: fix configure [Checkin: Comment 10] (934 bytes, patch)
2009-08-24 16:32 PDT, Ted Mielczarek [:ted.mielczarek]
benjamin: review+
Details | Diff | Review
(Bv1-CC) Copy 'step 1' patch to comm-central (1.9.2+) [Checkin: Comment 14] (754 bytes, patch)
2010-02-23 20:09 PST, Serge Gautherie (:sgautherie)
bugspam.Callek: review+
Details | Diff | Review

Description Andreas Gal :gal 2009-08-20 17:08:42 PDT
Our ICC use is still completely hosed when it comes to PGO.

When specifying MOZ_PROFILE_GENERATE=1, we pass -fprofile-generate, which is gcc-speak. ICC wants -prof-gen.

Also, configure fails with icc:

checking for a sizeof (void *)-byte type... int
checking for the size of void*... 4
checking for the alignment of void*... configure: error: No alignment found for void*

I really would like to see a concrete log of a successful ICC build with PGO before this bug is closed.
Comment 1 Ted Mielczarek [:ted.mielczarek] 2009-08-20 17:41:23 PDT
We have a test for ICC:
http://mxr.mozilla.org/mozilla-central/source/configure.in#445

but maybe they broke it in a newer version?
Comment 2 Andreas Gal :gal 2009-08-20 17:53:26 PDT
I have never been able to build properly with any version of ICC and our makefile. I used to use a hacked version of Makefile.ref.
Comment 3 Ted Mielczarek [:ted.mielczarek] 2009-08-21 05:06:16 PDT
I used ICC 10.something to build Spidermonkey successfully, but that was somewhere before Firefox 3.0 shipped, IIRC. If you run that command that configure is running, `icc -help`, what output does it print?
Comment 4 Andreas Gal :gal 2009-08-21 11:18:57 PDT
                          Intel(R) C++ Compiler Help
                          ==========================



  usage: icc [options] file1 [file2 ...]
         icpc [options] file1 [file2 ...]

     where options represents zero or more compiler options

     fileN is a C/C++ source (.C .c .cc .cpp .cxx .c++ .i .ii), 
     assembly (.s .S), object (.o), static library (.a), or other 
     linkable file

     The icpc command uses the same compiler options as the icc
     command.  Invoking the compiler using icpc compiles .c and .i files
     as C++.  Invoking the compiler using icc compiles .c and .i files as
     C.  Using icpc always links in C++ libraries.  Using icc only
     links in C++ libraries if C++ source is provided on the command line.

     Commonly used options may be placed in the icc .cfg file.



   Some options listed are only available on a specific system
   i32    indicates the feature is available on systems based on IA-32
          architecture
   i64em  indicates the feature is available on systems using Intel(R) 64
          architecture



                             Compiler Option List
                             --------------------


Optimization
------------



-O1       optimize for maximum speed, but disable some optimizations which
          increase code size for a small speed benefit

-O2       optimize for maximum speed (DEFAULT)

-O3       optimize for maximum speed and enable more aggressive optimizations
          that may not improve performance on some programs

-O        same as -O2

-Os       enable speed optimizations, but disable some optimizations which
          increase code size for small speed benefit 

-O0       disable optimizations

-fast     enable -xHOST -O3 -ipo -no-prec-div -mdynamic-no-pic
          options set by -fast cannot be overridden with the exception of
          -xHOST, list options separately to change behavior

-fno-alias
          assume no aliasing in program

-fno-fnalias
          assume no aliasing within functions, but assume aliasing across calls

-f[no-]builtin
          disable inline expansion of intrinsic functions

-fno-builtin-<func>
          disable the <func> intrinsic

-ffunction-sections
          separate functions for the linker (COMDAT)

-fdata-sections
          same as -ffunction-sections

-nolib-inline
          disable inline expansion of intrinsic functions


Code Generation
---------------



-x<code1>[,<code2>,...]
          generate specialized code to run exclusively on processors
          indicated by <code> as described below
            Host generate instructions for the highest instruction set and
                 processor available on the compilation host machine

            SSE3    Intel(R) Core(TM) processor family with Streaming SIMD
                    Extensions 3 (SSE3) instruction support
            SSE3_ATOM Can generate MOVBE instructions for Intel processors and
                      can optimize for the Intel(R) Atom(TM) Processor and 
                      Intel(R) Centrino(R) Atom(TM) Processor Technology
                      Extensions 3 (SSE3) instruction support
            SSSE3   Intel(R) Core(TM)2 processor family with SSSE3
            SSE4.1  Future Intel processors supporting SSE4 Vectorizing
                    Compiler and Media Accelerator instructions
            SSE4.2  Can generate Intel(R) SSE4 Efficient Accelerated String
                    and Text Processing instructions supported by Intel(R)
                    Core(TM) i7 processors. Can generate Intel(R) SSE4 
                    Vectorizing Compiler and Media Accelerator, Intel(R) SSSE3,
                    SSE3, SSE2, and SSE instructions and it can optimize for
                    the Intel(R) Core(TM) processor family.
              

-ax<code1>[,<code2>,...]
          generate code specialized for processors specified by <codes>
          while also generating generic IA-32 instructions.  
          <codes> includes one or more of the following:

            SSE3    Intel(R) Core(TM) processor family with Streaming SIMD
                    Extensions 3 (SSE3) instruction support
            SSSE3   Intel(R) Core(TM)2 processor family with SSSE3
            SSE4.1  Future Intel processors supporting SSE4 Vectorizing
                    Compiler and Media Accelerator instructions
            SSE4.2  Can generate Intel(R) SSE4 Efficient Accelerated String
                    and Text Processing instructions supported by Intel(R)
                    Core(TM) i7 processors. Can generate Intel(R) SSE4 
                    Vectorizing Compiler and Media Accelerator, Intel(R) SSSE3,
                    SSE3, SSE2, and SSE instructions and it can optimize for
                    the Intel(R) Core(TM) processor family.

-mcpu=<cpu>
          same as -mtune=<cpu>

-mtune=<cpu>
          optimize for a specific <cpu>
            pentium3  - optimize for Pentium(R) III processors
            pentium4  - optimize for Pentium(R) 4 processor (DEFAULT)

-march=<cpu>
          generate code exclusively for a given <cpu>
            pentium3  - streaming SIMD extensions
            pentium4  - Pentium(R) 4 New Instructions

-msse3    generate code for Intel(R) Core(TM) Duo processors, Intel(R) Core(TM)
          Solo processors, Intel Pentium 4 and compatible Intel processors with
          Streaming SIMD Extensions 3 (SSE3) instruction support

-mssse3   Intel(R) Core(TM)2 processor family with SSSE3

-msse4.1  Future Intel processors supporting SSE4 Vectorizing Compiler and
          Media Accelerator instructions

-minstruction=<keyword>
          Refine instruction set output for the selected target processor

            nomovbe  - Do not generate MOVBE instructions with SSE3_ATOM

-f[no-]omit-frame-pointer
          enable(DEFAULT)/disable use of EBP as general purpose register.
          -fno-omit-frame-pointer replaces -fp

-f[no-]exceptions
          enable/disable(DEFAULT) C++ exception handling table generation

-fnon-call-exceptions
          enable/disable(DEFAULT) code that allows exceptions from trapping 
          instructions to be caught


Interprocedural Optimization (IPO)
----------------------------------



-[no-]ip  enable(DEFAULT)/disable single-file IP optimization
          within files 

-ipo[n]   enable multi-file IP optimization between files

-ipo-c    generate a multi-file object file (ipo_out.o)

-ipo-S    generate a multi-file assembly file (ipo_out.S)

-ip-no-inlining
          disable full and partial inlining

-ip-no-pinlining
          disable partial inlining

-ipo-separate
          create one object file for every source file (overrides -ipo[n])

-ipo-jobs<n>
          specify the number of jobs to be executed simultaneously during the
          IPO link phase


Advanced Optimizations
----------------------



-unroll[n]
          set maximum number of times to unroll loops.  Omit n to use default
          heuristics.  Use n=0 to disable the loop unroller

-unroll-aggressive
          enables more aggressive unrolling heuristics

-funroll-loops
          unroll loops based on default heuristics

-[no-]scalar-rep
          enable(DEFAULT)/disable scalar replacement (requires -O3)

-[no-]ansi-alias
          enable/disable(DEFAULT) use of ANSI aliasing rules optimizations;
          user asserts that the program adheres to these rules

-[no-]complex-limited-range
          enable/disable(DEFAULT) the use of the basic algebraic expansions of
          some complex arithmetic operations.  This can allow for some
          performance improvement in programs which use a lot of complex
          arithmetic at the loss of some exponent range.

-[no-]alias-const
          enable/disable(DEFAULT) a heuristic stating that if two arguments to
          a function have pointer type, a pointer to const does not alias a
          pointer to non-const. Also known as the input/output buffer rule, it
          assumes that input and output buffer arguments do not overlap.

-fargument-alias
          arguments may alias each other and may alias global storage

-fargument-noalias
          arguments do not alias each other but may alias global storage

-fargument-noalias-global
          arguments do not alias each other and do not alias global storage

-ftls-model=<model>
          change thread-local storage model, where <model> can be the
          following: global-dynamic, local-dynamic, initial-exec or local-exec

-[no-]opt-multi-version-aggressive
          enables more aggressive multi-versioning to check for pointer
          aliasing and scalar replacement

-opt-ra-region-strategy[=<keyword>]
          select the method that the register allocator uses to partition each
          routine into regions
            routine - one region per routine
            block   - one region per block
            trace   - one region per trace
            loop    - one region per loop
            default - compiler selects best option

-[no-]vec
          enables(DEFAULT)/disables vectorization

-[no-]vec-guard-write
          enables cache/bandwidth optimization for stores under conditionals
          within vector loops

-opt-jump-tables=<arg>
          control the generation of jump tables
            default - let the compiler decide when a jump table, a series of
                      if-then-else constructs or a combination is generated
            large   - generate jump tables up to a certain pre-defined size
                      (64K entries)
            <n>     - generate jump tables up to <n> in size
          use -no-opt-jump-tables to lower switch statements as chains of
          if-then-else constructs

-fno-jump-tables
          do not generate jump tables for switches and if-then-else statements

-opt-block-factor=<n>
          specify blocking factor for loop blocking

-ffreestanding
          compile in a freestanding environment where the standard library
          may not be present

-opt-streaming-stores <arg>
          specifies whether streaming stores are generated
            always - enables generation of streaming stores under the
            assumption that the application is memory bound
            auto   - compiler decides when streaming stores are used (DEFAULT)
            never  - disables generation of streaming stores

-[no-]opt-subscript-in-range
          assumes no overflows in the intermediate computation of the
          subscripts


Profile Guided Optimization (PGO)
---------------------------------



-prof-dir <dir>
          specify directory for profiling output files (*.dyn and *.dpi)

-prof-src-root <dir>
          specify project root directory for application source files to
          enable relative path resolution during profile feedback on sources
          below that directory

-prof-src-root-cwd
          specify the current directory as the project root directory for
          application source files to enable relative path resolution during
          profile feedback on sources below that directory

-no-prof-src-dir
          specify that the directory names of sources should not be 
          considered when looking up profile records within the .dpi file

-prof-file <file>
          specify file name for profiling summary file

-prof-gen[x]
          instrument program for profiling; with the x qualifier, extra
          information is gathered for use with the PROFORDER tool

-no-prof-gen
          disable profiling instrumentation

-prof-use[=<arg>]
          enable use of profiling information during optimization
            weighted  - invokes profmerge with -weighted option to scale data
                        based on run durations
            [no]merge - enable(default)/disable the invocation of the profmerge
                        tool

-no-prof-use
          disable use of profiling information during optimization

-[no-]opt-prefetch
          enable/disable(DEFAULT) prefetch insertion

-p        compile and link for function profiling with UNIX gprof tool

-f[no-]instrument-functions
          determine whether function entry and exit points are instrumented

-prof-hotness-threshold=<val>
          set the hotness threshold for function grouping and function ordering


Optimization Reports
--------------------



-vec-report[n]
          control amount of vectorizer diagnostic information
            n=0    no diagnostic information
            n=1    indicate vectorized loops (DEFAULT)
            n=2    indicate vectorized/non-vectorized loops
            n=3    indicate vectorized/non-vectorized loops and prohibiting
                   data dependence information
            n=4    indicate non-vectorized loops
            n=5    indicate non-vectorized loops and prohibiting data
                   dependence information

-opt-report [n]
          generate an optimization report to stderr
            0   disable optimization report output
            1   minimum report output
            2   medium output (DEFAULT when enabled)
            3   maximum report output

-opt-report-file=<file>
          specify the filename for the generated report

-opt-report-phase=<phase>
          specify the phase that reports are generated against

-opt-report-routine=<name>
          reports on routines containing the given name

-opt-report-help
          display the optimization phases available for reporting


OpenMP*
-------



-openmp   enable the compiler to generate multi-threaded code based on the
          OpenMP* directives

-openmp-profile
          enable analysis of OpenMP application when the Intel(R) Thread
          Profiler is installed

-openmp-stubs
          enables the user to compile OpenMP programs in sequential mode.  The
          OpenMP directives are ignored and a stub OpenMP library is linked
          (sequential)

-openmp-report{0|1|2}
          control the OpenMP parallelizer diagnostic level

-openmp-lib <ver>
          choose which OpenMP library version to link with
            compat - use the GNU compatible OpenMP run-time libraries
                     (DEFAULT)

-openmp-task <arg>
          choose which OpenMP tasking model to support
            omp   - support OpenMP 3.0 tasking (DEFAULT)
            intel - support Intel taskqueuing

-openmp-threadprivate <ver>
          choose which threadprivate implementation to use
            compat - use the GNU compatible thread local storage
            legacy - use the Intel compatible implementation
                     (DEFAULT)


Parallel Processing
-------------------



-parallel
          enable the auto-parallelizer to generate multi-threaded code for
          loops that can be safely executed in parallel

-par-report{0|1|2|3}
          control the auto-parallelizer diagnostic level

-par-threshold[n]
          set threshold for the auto-parallelization of loops where n is an
          integer from 0 to 100

-par-runtime-control
          enable compiler to generate runtime control code for effective
          automatic parallelization


Floating Point
--------------



-fp-model <name>
          enable <name> floating point model variation
            [no-]except - enable/disable floating point semantics
            fast[=1|2]  - enables more aggressive floating point optimizations
            precise     - allows value-safe optimizations
            source      - enables intermediates in source precision
            strict      - enables -fp-model precise -fp-model except, disables
                          contractions and enables pragma stdc fenv_access

            double      - rounds intermediates in 53-bit (double) precision
            extended    - rounds intermediates in 64-bit (extended) precision

-fp-speculation=<mode>
          enable floating point speculations with the following <mode>
          conditions:
            fast   - speculate floating point operations (DEFAULT)
            safe   - speculate only when safe
            strict - same as off
            off    - disables speculation of floating-point operations

-pc32     set internal FPU precision to 24 bit significand

-pc64     set internal FPU precision to 53 bit significand

-pc80     set internal FPU precision to 64 bit significand (DEFAULT)

-mp1      improve floating-point precision (speed impact less than -mp)

-[no-]ieee-fp
          same as -mp

-[no-]prec-sqrt
          determine if certain square root optimizations are enabled

-[no-]prec-div
          improve precision of FP divides (some speed impact)

-[no-]fast-transcendentals
          generate a faster version of the transcendental functions

-[no-]fp-port
          round fp results at assignments and casts (some speed impact)

-fp-stack-check
          enable fp stack checking after every function/procedure call

-rcd      rounding mode to enable fast float-to-int conversions

-[no-]ftz
          enable/disable flush denormal results to zero


Inlining
--------



-inline-level=<n>
          control inline expansion:
            n=0  disable inlining
            n=1  inline functions declared with __inline, and perform C++
                 inlining
            n=2  inline any function, at the compiler's discretion 
                 (same as -ip)

-f[no-]inline
          inline functions declared with __inline, and perform C++ inlining

-f[no-]inline-functions
          inline any function at the compiler's discretion

-finline-limit=<n>
          set maximum number of statements a function can have and still be
          considered for inlining

-inline-min-size=<n>
          set size limit for inlining small routines

-no-inline-min-size
          no size limit for inlining small routines

-inline-max-size=<n>
          set size limit for inlining large routines

-no-inline-max-size
          no size limit for inlining large routines

-inline-max-total-size=<n>
          maximum increase in size for inline function expansion

-no-inline-max-total-size
          no size limit for inline function expansion

-inline-max-per-routine=<n>
          maximum number of inline instances in any function

-no-inline-max-per-routine
          no maximum number of inline instances in any function

-inline-max-per-compile=<n>
          maximum number of inline instances in the current compilation

-no-inline-max-per-compile
          no maximum number of inline instances in the current compilation

-inline-factor=<n>
          set inlining upper limits by n percentage

-no-inline-factor
          do not set set inlining upper limits

-inline-forceinline
          treat inline routines as forceinline

-inline-calloc
          directs the compiler to inline calloc() calls as malloc()/memset()


Output, Debug, PCH
------------------



-c        compile to object (.o) only, do not link

-S        compile to assembly (.s) only, do not link

-fsource-asm
          produce assembly file with optional source annotations (requires -S)

-f[no-]verbose-asm
          produce assembly file with compiler comments (DEFAULT) (requires -S)

-fcode-asm
          produce assembly file with optional code annotations (requires -S)

-use-msasm
          support Microsoft* style assembly language insertion using MASM style
          syntax

-fasm-blocks
          enables the use of blocks and entire functions of assembly code
          within a C or C++ file

-o <file>
          name output file

-g        produce symbolic debug information in object file (implies -O0 when
          another optimization option is not explicitly set)

-debug [keyword]
          enable debug information and control output of enhanced debug
          information
            keywords:  all, full, minimal, none, [no]inline-debug-info
                       [no]variable-locations, [no]semantic-stepping,
                       extended, parallel

                       [no]expr-source-pos

-g0       disable generation of symbolic debug information

-gdwarf-2
          enable generation of debug information using the DWARF2 format

-ftrapuv  trap uninitialized variables

-print-multi-lib
          print information about libraries being used

-pch-create <file>
          create precompiled header file

-pch-use <file>
          use precompiled header file

-pch      enable automatic precompiled header file creation/usage

-pch-dir <dir>
          name precompiled header directory


Preprocessor
------------



-A<name>[<val>]
          create an assertion <name> having value <val>

-C        do not strip comments

-D<name>[=<text>]
          define macro

-U<name>  remove predefined macro

-E        preprocess to stdout

-EP       preprocess to stdout, omitting #line directives

-P        preprocess to file, omitting #line directives

-I<dir>   add directory to include file search path

-idirafter<dir>
          add directory to the second include file search path (after -I)

-isystem<dir>
          add directory to the start of the system include path

-X, -nostdinc
          remove standard directories from include file search path

-nostdinc++
          remove standard C++ directories from include file search path

-iprefix <prefix>
          use <prefix> with -iwithprefix as a prefix

-iwithprefix <dir>
          append <dir> to the prefix passed in by -iprefix and put it on the
          include search path at the end of the include directories

-iwithprefixbefore <dir>
          similar to -iwithprefix except the include directory is placed in the
          same place as -I command line include directories

-iquote <dir>
          add directory to the front of the include file search path for files
          included with quotes, but not brackets

-imacros <file>
          treat <file> as an #include file, but throw away all preprocessing
          while macros defined remain defined

-H        print include file order

-B<prefix>
          find libraries, headers and executables in <prefix>

-M        generate makefile dependency information

-MM       similar to -M, but do not include system header files

-MG       similar to -M, but treat missing header files as generated files

-MD       preprocess and compile, generating output file containing dependency
          information ending with extension .d

-MMD      similar to -MD, but do not include system header files

-MF<file>
          generate makefile dependency information in file (must specify -M
          or -MM)

-MP       add a phony target for each dependency

-MT<target>
          change the default target rule for dependency generation

-MQ<target>
          same as -MT, but quotes special Make characters

-dM       output macro definitions in effect after preprocessing (use with -E)

-dD       same as -dM, but output #define directives in preprocessed source

-dN       same as -dD, but #define directives contain only macro names

-gcc      Predefine the 4, 0, and 1
          macros (DEFAULT)

-no-gcc   Do not predefine GNUC macros listed in -gcc mode. Warning: can
          prevent correct system header compilation, see -gcc-sys

-gcc-sys  same as -no-gcc, except that the GNU macros are defined only while
          preprocessing the system include headers

-no-icc   do not predefine the 9999 and 9999 macros. Warning: can
          prevent correct Intel header compilation

-pragma-optimization-level=[Intel|GCC]
          process #pragma optimize using Intel (DEFAULT) or GCC syntax


Component Control
-----------------



-Qoption,<tool>,<opts>
          pass options <opts> to tool specified by <tool>

-Qlocation,<tool>,<dir>
          set <dir> as the location of tool specified by <tool>

-Qinstall <dir>
          set <dir> as root of compiler installation


Language
--------



-std=<std>
          enable language support for <std>, as described below
            c99   enable C99 support for C programs
            c++0x enable preliminary support for some C++0x features

-x <type>
          all source files found subsequent to -x <type> will be recognized
          as one of the following types:
              c                  - C source file
              c++                - C++ source file
              c-header           - C header file
              cpp-output         - C pre-processed file
              c++-cpp-output     - C++ pre-processed file
              assembler          - assembly file
              assembler-with-cpp - assembly file that needs to be preprocessed
              none               - revert to original file extension

-ansi     equivalent to GNU -ansi

-strict-ansi 
          strict ANSI conformance dialect

-Zp[n]    specify alignment constraint for structures where 
          n=1,2,4,8,16. 16 is the default

-fsyntax-only
          perform syntax and semantic checking only (no object file produced)

-fpermissive
          allows extensions for some non-conformant code

-funsigned-char
          change default char type to unsigned

-fshort-enums
          allocate as many bytes as needed for enumerated types

-f[no-]unsigned-bitfields
          change default bitfield type to unsigned

-fno-rtti
          disable RTTI support

-fno-implicit-templates
          never emit code for non-inline templates which are instantiated
          implicitly; only emit code for explicit instantiations

-fno-implicit-inline-templates
          do not emit code for implicit instantiations of inline templates

-ftemplate-depth-[n]
          control the depth in which recursive templates are expanded

-[no]align
          analyze and reorder memory layout for variables and arrays

-[no-]restrict
          enable/disable the 'restrict' keyword for disambiguating pointers

-[no-]early-template-check
          enable/disable (DEFAULT) semantic checking of function template
          prototypes (before instantiation). Requires -gcc-version=340 or
          later

-[no-]check-uninit
          check for uninitialized variables

-export   enable the export template feature

-export-dir <dir>
          add directory to export template search path

-help-pragma
          output supported pragmas and their usage syntax


Compiler Diagnostics
--------------------



-w        disable all warnings

-w<n>     control diagnostics
            n = 0    display errors (same as -w)
            n = 1    display warnings and errors (DEFAULT)
            n = 2    display remarks, warnings and errors

-Wbrief   print brief one-line diagnostics

-Werror   force warnings to be reported as errors

-Werror-all
          force warnings and remarks to be reported as errors

-Wall     enable all warnings

-Wcheck   enable more strict diagnostics

-Weffc++  enable effective C++ diagnostic warnings

-wo<L1>[,<L2>,...]
          issue diagnostics L1 through LN only once

-W[no-]fatal-errors
          ends compilation after the first error encountered

-W[no-]format
          enable argument checking for calls to printf, scanf, etc

-W[no-]format-security
          warn for uses of format strings and specifiers in printf,
          scanf, etc that may introduce security problems

-W[no-]missing-declarations
          warn for global functions and variables without prior declaration

-W[no-]missing-prototypes
          warn for missing prototypes

-W[no-]strict-prototypes
          warn for functions declared or defined without specified argument
          types

-W[no-]pointer-arith
          warn for questionable pointer arithmetic

-W[no-]uninitialized
          warn if a variable is used before being initialized

-Winline  enable inline diagnostics

-W[no-]deprecated
          print warnings related to deprecated features

-W[no-]abi
          warn if generated code is not C++ ABI compliant

-Wcontext-limit=<n>
          set maximum number of template instantiation contexts shown in
          diagnostic

-Wcast-qual
          warn if cast is used to override pointer type qualifier

-W[no-]unused-function
          warn if declared function is not used

-W[no-]unknown-pragmas
          warn if an unknown #pragma directive is used (DEFAULT)

-W[no-]main
          warn if return type of main is not expected

-W[no-]comment[s]
          warn when   comment

-W[no-]conversion
          warn for implicit conversions that may alter a value

-W[no-]return-type
          warn when a function uses the default int return type and warn when
          a return statement is used in a void function

-W[no-]extra-tokens
          warn about extra tokens after prepreprocessor directives

-W[no-]pragma-once
          warn about the use of #pragma once

-W[no-]shadow
          warn when a variable declaration hides a previous declaration

-Woverloaded-virtual
          warn when a function declaration hides virtual functions from a base
          class

-W[no-]trigraphs
          warn about the recognition and conversion of trigraphs

-W[no-]multichar
          warn if a multicharacter constant ('ABC') is used

-W[no-]overflow
          warn for operations that could result in integer overflow

-Wp64     print diagnostics for 64-bit porting

-W[no-]shorten-64-to-32
          warn for values implicitly converted from a 64-bit to a 32-bit type.
          Similar to -Wp64

-[no]traceback
          specify whether the compiler generates data to allow for source file
          traceback information at runtime (only to be used when linking with
          Fortran programs)

-noerror-limit
          set no maximum number on error-level or fatal-level error messages

-diag-enable <v1>[,<v2>,...]
          enable the specified diagnostics or diagnostic groups

-diag-disable <v1>[,<v2>,...]
          disable the specified diagnostics or diagnostic groups

          where groups include:

              thread     - enable diagnostics to aid in thread-enabling source

              port-win   - enable diagnostics for GNU extensions that may
                           cause errors when porting to Windows

-diag-error <v1>[,<v2>,...]
          output the specified diagnostics or diagnostic groups as errors

-diag-warning <v1>[,<v2>,...]
          output the specified diagnostics or diagnostic groups as warnings

-diag-remark <v1>[,<v2>,...]
          output the the specified diagnostics or diagnostic groups as remarks

-diag-dump
          display the currently enabled diagnostic messages to stdout or to a
          specified diagnostic output file.

-diag-file[=<file>]
          <file> where diagnostics are emitted to.  Not specifying this causes
          messages to be output to stderr

-diag-file-append[=<file>]
          <file> where diagnostics are emitted to. When <file> already exists,
          output is appended to the file

-[no-]diag-id-numbers
          enable(DEFAULT)/disable the diagnostic specifiers to be output in
          numeric form

-diag-error-limit <num>
          specify the maximum number of errors emitted

-diag-once <v1>[,<v2>,...]
          issue diagnostics v1 through vN only once


Miscellaneous
-------------



-V        display compiler version information

-dumpversion
          display the compiler version number only

-dumpmachine
          display the target machine only

--version
          display GCC style version information

-save-temps
          store the intermediate files in current directory and name them
          based on the source file.  Only saves files that are generated by
          default

-dryrun   show driver tool commands but do not execute tools

-v        show driver tool commands and execute tools

[no-]multibyte-chars
          provide support for multi-byte characters

-multiple-processes[=<n>]
          create multiple processes that can be used to compile large numbers
          of source files at the same time


Data
----



-Zp[n]    specify alignment constraint for structures (n=1,2,4,8,16
          -Zp16 DEFAULT)

-[no]align
          analyze and reorder memory layout for variables and arrays

-fminshared
          Compilation is for the main executable. Absolute addressing can be
          used and non-position independent code generated for symbols that
          are at least protected

-fcommon  Enables the compiler to treat common variables as if they were
          defined.  That in turn allows the use of gprel addressing of common
          data variables.  -fno-common disables

-freg-struct-return
          return struct and union values in registers when possible

-fstack-security-check
          enable overflow security checks.  
          -f[no-]stack-security-check disables (DEFAULT)

-fstack-protector
          enable stack overflow security checks.
          -f[no-]stack-protector disables (DEFAULT)

-fpic, -fPIC
          generate position independent code (-fno-pic/-fno-PIC is DEFAULT)

-mdynamic-no-pic
          Disables the generation of position independent code.  Use when
          compiling code that will be linked into an executable and not a
          shared library

-auto-ilp32
           specify that the application cannot exceed a 32-bit address space
           (-ipo[n] required)

-[no-]global-hoist
          enable(DEFAULT)/disable external globals are load safe

-f[no-]keep-static-consts
          enable/disable(DEFAULT) emission of static const variables even
          when not referenced

-fpack-struct
          pack structure members together

-f[no-]math-errno
          set ERRNO after calling standard math library functions

-no-bss-init
          disable placement of zero-initialized variables in BSS (use DATA)

-mcmodel=<size>
          use a specific memory model to generate code and store data
            small  - Restricts code and  data to the first 2GB of address 
                     space (DEFAULT)
            medium - Restricts code to the first 2GB; it places no memory
                     restriction on data
            large  - Places no memory restriction on code or data

-falign-functions=[2|16]
          align the start of functions on a 2 (DEFAULT) or 16 byte boundary

-falign-functions
          align the start of functions to an optimal machine-dependent value.
          -fno-align-functions (DEFAULT) aligns on a 2-byte boundary

-fvisibility=[extern|default|protected|hidden|internal]
          Global symbols (data and functions) will get the visibility 
          attribute given by default. Symbol visibility attributes explicitly
          set in the source code or using the symbol visibility attribute
          file options will override the -fvisibility setting

-fvisibility-extern=<file>
          Space separated symbols listed in the <file> argument will geti
          visibility set to extern

-fvisibility-default=<file>
          Space separated symbols listed in the <file> argument will get
          visibility set to default

-fvisibility-protected=<file>
          Space separated symbols listed in the <file> argument will get
          visibility set to protected

-fvisibility-hidden=<file>
          Space separated symbols listed in the <file> argument will get
          visibility set to hidden

-fvisibility-internal=<file>
          Space separated symbols listed in the <file> argument will get
          visibility set to internal

-fvisibility-inlines-hidden
          mark inline member functions as hidden


Compatibility
-------------



-gcc-name=<name>
          name and location of gcc if not where expected

-gxx-name=<name>
          name and location of g++ if not where expected

-gcc-version=<version>
          specify the <version> of gcc compatibility.  Default value matches
          gcc version installed.  Major/Minor versions listed but patch
          levels (i.e. 345) are permissible
            320 - gcc 3.2.x compatibility
            330 - gcc 3.3.x compatibility
            340 - gcc 3.4.x compatibility
            400 - gcc 4.0.x compatibility
            410 - gcc 4.1.x compatibility
            420 - gcc 4.2.x compatibility

-fabi-version=<val>
          directs the compiler to select a specific ABI implementation
            0 - most recent ABI implementation
            1 - g++ 3.2 compatible ABI implementation
            2 - most conformant ABI implementation


Linking/Linker
--------------



-L<dir>   instruct linker to search <dir> for libraries

-l<string>
          instruct the linker to link in the -l<string> library

-shared-intel
          link Intel provided libraries dynamically

-static-intel
          link Intel provided libraries statically

-shared-libgcc
          link libgcc dynamically

-static-libgcc
          link libgcc statically

-dynamic-linker<file>
          select dynamic linker other than the default

-no-cxxlib
          do not link in C++ runtime libraries

-cxxlib[=dir]
          link using C++ run-time libraries provided with gcc dir is an
          optional top-level location for the gcc binaries and libraries

-nodefaultlibs
          do not use standard libraries when linking

-nostartfiles
          do not use standard startup files when linking

-nostdlib
          do not use standard libraries and startup files when linking

-dynamiclib
          produce a dynamic library

-staticlib
          produce a static library

-pthread  use POSIX* thread library for multithreading support

-cxxlib-<mode>
          tell the compiler which C++ run-time libraries to use
            nostd - do not link in standard C++ library

-u <symbol>
          pretend the <symbol> is undefined

-T <file>
          direct linker to read link commands from <file>

-Xlinker <val>
          pass <val> directly to the linker for processing

-Wa,<o1>[,<o2>,...]
          pass options o1, o2, etc. to the assembler

-Wl,<o1>[,<o2>,...]
          pass options o1, o2, etc. to the linker for processing

-Wp,<o1>[,<o2>,...]
          pass options o1, o2, etc. to the preprocessor


Deprecated Options
------------------



-Ob                    use -inline-level=<n>
-cxxlib-gcc[=dir]      use -cxxlib[=dir]
-fwritable-strings     use -assume nowriteable-strings
-i-dynamic             use -shared-intel
-i-static              use -static-intel
-inline-debug-info     use -debug inline-debug-info
-mp                    use -fp-model <arg>
-use-asm               No replacement
-A-                    use -U<arg>
-prefetch              use -opt-prefetch
-prof-genx             use -prof-gen=srcpos

-openmp-lib=legacy     use -openmp-lib=compat

-alias-args            use -fargument-alias
-c99                   use -std=c99
-create-pch            use -pch-create
-Kc++                  use -x c++
-no-alias-args         use -fargument-noalias
-use-pch               use -pch-use
-wn                    use -diag-error-limit
-wd                    use -diag-disable
-we                    use -diag-error
-ww                    use -diag-warning
-wr                    use -diag-remark
-wo                    use -diag-once


-help [category]   print full or category help message



Valid categories include
       advanced        - Advanced Optimizations
       codegen         - Code Generation
       compatibility   - Compatibility
       component       - Component Control
       data            - Data
       deprecated      - Deprecated Options
       diagnostics     - Compiler Diagnostics
       float           - Floating Point
       help            - Help
       inline          - Inlining
       ipo             - Interprocedural Optimization (IPO)
       language        - Language
       link            - Linking/Linker
       misc            - Miscellaneous
       parallel        - Parallel Processing
       opt             - Optimization
       output          - Output
       pgo             - Profile Guided Optimization (PGO)
       preproc         - Preprocessor
       reports         - Optimization Reports

       openmp          - OpenMP


Copyright (C) 1985-2008, Intel Corporation.  All rights reserved.
* Other brands and names are the property of their respective owners.
Comment 5 Ted Mielczarek [:ted.mielczarek] 2009-08-21 12:01:08 PDT
Ok, that looks reasonable, I'll have to dig a bit more to see what's going wrong here.
Comment 6 Andreas Gal :gal 2009-08-21 13:32:38 PDT
Thanks a lot for looking into this.
Comment 7 Ted Mielczarek [:ted.mielczarek] 2009-08-21 13:59:17 PDT
Ok, figured out the first bit of this, anyway. We're testing the output of icc for "Intel(R) C Compiler" and it's now producing "Intel(R) C++ Compiler". Silly.
Comment 8 Ted Mielczarek [:ted.mielczarek] 2009-08-24 16:32:38 PDT
Created attachment 396332 [details] [diff] [review]
step 1: fix configure
[Checkin: Comment 10]

This is probably not sufficient, but this is step 1, which will fix configure so it detects icc properly and sets INTEL_CC.
Comment 9 Benjamin Smedberg [:bsmedberg] 2009-08-26 13:18:47 PDT
Comment on attachment 396332 [details] [diff] [review]
step 1: fix configure
[Checkin: Comment 10]

ugh. This seems incredibly fragile.
Comment 10 Ted Mielczarek [:ted.mielczarek] 2009-08-26 17:28:29 PDT
I agree, but I don't know a better way. :-(
Pushed this fix to m-c:
http://hg.mozilla.org/mozilla-central/rev/cadcc06ff89f

gal, give this a shot and let me know how far you get.
Comment 11 Ted Mielczarek [:ted.mielczarek] 2009-10-02 12:10:10 PDT
gal: any update?
Comment 12 Andreas Gal :gal 2009-10-02 14:08:55 PDT
testing today
Comment 13 Serge Gautherie (:sgautherie) 2010-02-23 20:09:29 PST
Created attachment 428621 [details] [diff] [review]
(Bv1-CC) Copy 'step 1' patch to comm-central (1.9.2+)
[Checkin: Comment 14]
Comment 14 Serge Gautherie (:sgautherie) 2010-03-03 06:30:03 PST
Comment on attachment 428621 [details] [diff] [review]
(Bv1-CC) Copy 'step 1' patch to comm-central (1.9.2+)
[Checkin: Comment 14]


http://hg.mozilla.org/comm-central/rev/d117bccfc590
Comment 15 Ted Mielczarek [:ted.mielczarek] 2011-11-08 07:51:40 PST
Fixed as much as I could, I don't really care about this bug anymore.

Note You need to log in before you can comment on or make changes to this bug.