On Sat, Mar 19, 2016 at 4:17 AM, Nick Wellnhofer <[email protected]> wrote:
>> ICC does offer some nice optimization diagnostics.  Assuming most
>> people aren't using it, I've attached a sample here for
>> "-qopt-report=4 -qopt-report-phase cg,ipo,loop,par,vec" which might be
>> worth glancing at.
>
>
> I could only find an attachment with the leak sanitizer output.

Hmm, it's attached in my sent folder.  Either it was stripped by the
mailing list software or at your end.   I've renamed it from
CFCParseHeader.optrpt to CFCParseHeader.txt to see if that helps.

>> The various -fsanitize options are really useful, and surprisingly
>> underutilized.   it probably would be good practice to start testing
>> with them.   Adding them to CFLAGS is a bit difficult in this project,
>> but using "CC='clang -fsanitize=address' configure" seems to work.
>
> We regularly test with Valgrind and from my experience it catches more
> errors than -fsanitize=address and -fsanitize=memory. An -fsanitize build is
> a lot faster than testing with Valgrind, though, and -fsanitize=undefined
> adds some additional diagnostics, so we should provide an easy way to test
> with these flags.

I agree --- for leaks and uninitialized memory, Valgrind is more
complete.  But the 'undefined' checker is unique, and all of them are
fast enough that one might consider enabling one of them by default
for test suite, or at least making each of them a predefined targets.

As I was testing this, I realized that the support for the sanitize
libraries has been broken in the standard Ubuntu and Debian Linux
packages for clang for the last few versions.   It's a known bug, and
has since been fixed, but the packages still haven't been updated.  If
you are affected, I give a workaround here:
http://askubuntu.com/questions/740289/which-package-do-i-need-to-use-clang-with-asan-for-32-bit/745320

On Sat, Mar 19, 2016 at 5:14 AM, Marvin Humphrey <[email protected]> wrote:
> I'm expecting to land a branch that deals with warnings today.  For
> Clownfish at least and possibly also for Lucy.

Wonderful!

--nate
Intel(R) Advisor can now assist with vectorization and show optimization
  report messages with your source code.
See "https://software.intel.com/en-us/intel-advisor-xe"; for details.


    Report from: Interprocedural optimizations [ipo]

  WHOLE PROGRAM (SAFE) [EITHER METHOD]: false
  WHOLE PROGRAM (SEEN) [TABLE METHOD]: false
  WHOLE PROGRAM (READ) [OBJECT READER METHOD]: false

INLINING OPTION VALUES:
  -inline-factor: 100
  -inline-min-size: 30
  -inline-max-size: 230
  -inline-max-total-size: 2000
  -inline-max-per-routine: 10000
  -inline-max-per-compile: 500000

In the inlining report below:
   "sz" refers to the "size" of the routine. The smaller a routine's size,
      the more likely it is to be inlined.
   "isz" refers to the "inlined size" of the routine. This is the amount
      the calling routine will grow if the called routine is inlined into it.
      The compiler generally limits the amount a routine can grow by having
      routines inlined into it.

Begin optimization report for: CFCParseHeaderAlloc(void *(*)(size_t))

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (CFCParseHeaderAlloc(void *(*)(size_t))) [1/19=5.3%] 
../src/CFCParseHeader.c(768,55)
  -> INDIRECT-: (770,24) 
     [[ Callee not marked with inlining pragma ]]

===========================================================================

Begin optimization report for: yy_destructor(yyParser *, unsigned char, 
YYMINORTYPE *)

    Report from: Interprocedural optimizations [ipo]

DEAD STATIC FUNCTION: (yy_destructor(yyParser *, unsigned char, YYMINORTYPE *)) 
../src/CFCParseHeader.c(794,2)

===========================================================================

Begin optimization report for: CFCParseHeaderFree(void *, void (*)(void *))

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (CFCParseHeaderFree(void *, void (*)(void *))) [3/19=15.8%] 
../src/CFCParseHeader.c(930,2)
  -> INLINE: (933,30) yy_pop_parser_stack(yyParser *) (isz = 137) (sz = 145)
    -> EXTERN: (904,5) fprintf(FILE *__restrict__, const char *__restrict__, 
...)
    -> INLINE: (910,3) yy_destructor(yyParser *, unsigned char, YYMINORTYPE *) 
(isz = 102) (sz = 111)
      -> EXTERN: ../src/CFCParseHeader.y:(239,5) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(241,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(242,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(243,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(244,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(247,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(249,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(251,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(253,2) CFCBase_decref(CFCBase *)
      -> EXTERN: ../src/CFCParseHeader.y:(254,2) CFCBase_decref(CFCBase *)
  -> INDIRECT-: (937,3) 
     [[ Callee not marked with inlining pragma ]]


    Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, 
vec, par]



Non-optimizable loops:


LOOP BEGIN at ../src/CFCParseHeader.c(933,3)
   remark #15535: loop was not vectorized: loop contains switch statement. 
Consider using if-else statement.   [ ../src/CFCParseHeader.c(796,3) ]
LOOP END
===========================================================================

Begin optimization report for: yy_find_shift_action(yyParser *, unsigned char)

    Report from: Interprocedural optimizations [ipo]

DEAD STATIC FUNCTION: (yy_find_shift_action(yyParser *, unsigned char)) 
../src/CFCParseHeader.c(961,2)

===========================================================================

Begin optimization report for: yy_find_reduce_action(int, unsigned char)

    Report from: Interprocedural optimizations [ipo]

DEAD STATIC FUNCTION: (yy_find_reduce_action(int, unsigned char)) 
../src/CFCParseHeader.c(1026,2)

===========================================================================

Begin optimization report for: yyStackOverflow(yyParser *)

    Report from: Interprocedural optimizations [ipo]

DEAD STATIC FUNCTION: (yyStackOverflow(yyParser *)) 
../src/CFCParseHeader.c(1053,49)

===========================================================================

Begin optimization report for: yy_pop_parser_stack(yyParser *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (yy_pop_parser_stack(yyParser *)) [7/19=36.8%] 
../src/CFCParseHeader.c(897,50)
  -> EXTERN: (904,5) fprintf(FILE *__restrict__, const char *__restrict__, ...)
  -> INLINE: (910,3) yy_destructor(yyParser *, unsigned char, YYMINORTYPE *) 
(isz = 102) (sz = 111)
    -> EXTERN: ../src/CFCParseHeader.y:(239,5) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(241,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(242,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(243,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(244,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(247,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(249,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(251,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(253,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(254,2) CFCBase_decref(CFCBase *)

===========================================================================

Begin optimization report for: yy_accept(yyParser *)

    Report from: Interprocedural optimizations [ipo]

DEAD STATIC FUNCTION: (yy_accept(yyParser *)) ../src/CFCParseHeader.c(2007,2)

===========================================================================

Begin optimization report for: CFCParseHeader(void *, int, char *, CFCParser *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (CFCParseHeader(void *, int, char *, CFCParser *)) [9/19=47.4%] 
../src/CFCParseHeader.c(2044,2)
  -> EXTERN: (2073,5) fprintf(FILE *__restrict__, const char *__restrict__, ...)
  -> INLINE: (2078,13) yy_find_shift_action(yyParser *, unsigned char) (isz = 
45) (sz = 56)
    -> EXTERN: (969,3) __assert_fail(const char *, const char *, unsigned int, 
const char *)
  -> EXTERN: (2080,7) __assert_fail(const char *, const char *, unsigned int, 
const char *)
  -> (2081,7) yy_shift(yyParser *, int, int, YYMINORTYPE *) (isz = 233) (sz = 
245)
     [[ Inlining would exceed -inline-max-size value (245>230)]]
  -> (2085,7) yy_reduce(yyParser *, int) (isz = 1788) (sz = 1795)
     [[ Inlining would exceed -inline-max-size value (1795>253)]]
  -> EXTERN: (2087,7) __assert_fail(const char *, const char *, unsigned int, 
const char *)
  -> EXTERN: (2093,9) fprintf(FILE *__restrict__, const char *__restrict__, ...)
  -> INLINE: (2174,9) yy_syntax_error(yyParser *, int, YYMINORTYPE) (isz = 8) 
(sz = 17)
    -> EXTERN: ../src/CFCParseHeader.y:(215,5) CFCParser_set_errors(CFCParser 
*, int)
    -> EXTERN: ../src/CFCParseHeader.y:(216,5) CFCParser_set_lineno(CFCParser 
*, int)
    -> EXTERN: ../src/CFCParseHeader.y:(216,33) yyget_lineno(void)
  -> INLINE: (2177,7) yy_destructor(yyParser *, unsigned char, YYMINORTYPE *) 
(isz = 102) (sz = 111)
    -> EXTERN: ../src/CFCParseHeader.y:(239,5) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(241,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(242,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(243,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(244,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(247,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(249,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(251,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(253,2) CFCBase_decref(CFCBase *)
    -> EXTERN: ../src/CFCParseHeader.y:(254,2) CFCBase_decref(CFCBase *)
  -> INLINE: (2179,9) yy_parse_failed(yyParser *) (isz = 25) (sz = 30)
    -> EXTERN: (1972,5) fprintf(FILE *__restrict__, const char *__restrict__, 
...)
    -> INLINE: (1975,32) yy_pop_parser_stack(yyParser *) (isz = 137) (sz = 145)
      -> EXTERN: (904,5) fprintf(FILE *__restrict__, const char *__restrict__, 
...)
      -> INLINE: (910,3) yy_destructor(yyParser *, unsigned char, YYMINORTYPE 
*) (isz = 102) (sz = 111)
        -> EXTERN: ../src/CFCParseHeader.y:(239,5) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(241,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(242,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(243,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(244,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(247,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(249,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(251,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(253,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(254,2) CFCBase_decref(CFCBase *)


    Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, 
vec, par]



Non-optimizable loops:


LOOP BEGIN at ../src/CFCParseHeader.c(2184,20)
   remark #15535: loop was not vectorized: loop contains switch statement. 
Consider using if-else statement.   [ ../src/CFCParseHeader.c(796,3) ]

   LOOP BEGIN at ../src/CFCParseHeader.c(1975,3) inlined into 
../src/CFCParseHeader.c(4178,9)
      remark #15535: loop was not vectorized: loop contains switch statement. 
Consider using if-else statement.   [ ../src/CFCParseHeader.c(796,3) ]
   LOOP END
LOOP END
===========================================================================

Begin optimization report for: yy_reduce(yyParser *, int)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (yy_reduce(yyParser *, int)) [10/19=52.6%] 
../src/CFCParseHeader.c(1248,2)
  -> EXTERN: (1259,5) fprintf(FILE *__restrict__, const char *__restrict__, ...)
  -> INLINE: (1938,11) yy_find_reduce_action(int, unsigned char) (isz = 69) (sz 
= 78)
    -> EXTERN: (1033,3) __assert_fail(const char *, const char *, unsigned int, 
const char *)
    -> EXTERN: (1036,3) __assert_fail(const char *, const char *, unsigned int, 
const char *)
    -> EXTERN: (1037,3) __assert_fail(const char *, const char *, unsigned int, 
const char *)
    -> EXTERN: (1044,3) __assert_fail(const char *, const char *, unsigned int, 
const char *)
    -> EXTERN: (1045,3) __assert_fail(const char *, const char *, unsigned int, 
const char *)
  -> (1954,7) yy_shift(yyParser *, int, int, YYMINORTYPE *) (isz = 233) (sz = 
245)
     [[ Inlining would exceed -inline-max-size value (245>230)]]
  -> EXTERN: (1957,5) __assert_fail(const char *, const char *, unsigned int, 
const char *)
  -> INLINE: (1958,5) yy_accept(yyParser *) (isz = 25) (sz = 30)
    -> EXTERN: (2011,5) fprintf(FILE *__restrict__, const char *__restrict__, 
...)
    -> (2014,32) yy_pop_parser_stack(yyParser *) (isz = 137) (sz = 145)
       [[ Inlining inhibited by overrideable criterion ]]
  -> EXTERN: ../src/CFCParseHeader.y:(258,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(259,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(263,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(264,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(268,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(269,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(273,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(274,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(278,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(279,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(283,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(284,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(293,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(294,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(298,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(299,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(303,5) CFCParser_set_result(CFCParser *, 
struct CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(304,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(310,24) CFCFile_new(struct CFCParcel *, 
struct CFCFileSpec *)
  -> EXTERN: ../src/CFCParseHeader.y:(310,57) CFCParser_get_file_spec(CFCParser 
*)
  -> EXTERN: ../src/CFCParseHeader.y:(311,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(316,5) CFCFile_add_block(CFCFile *, 
CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(317,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(325,24) CFCParcel_fetch(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(328,28) CFCParcel_new(const char *, const 
char *, struct CFCVersion *, struct CFCFileSpec *)
  -> EXTERN: ../src/CFCParseHeader.y:(329,9) CFCParcel_register(CFCParcel *)
  -> EXTERN: ../src/CFCParseHeader.y:(332,9) CFCBase_incref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(334,5) CFCParser_set_parcel(CFCParser *, 
struct CFCParcel *)
  -> EXTERN: ../src/CFCParseHeader.y:(340,5) CFCParser_set_class_name(CFCParser 
*, const char *)
  -> ../src/CFCParseHeader.y:(343,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(344,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(345,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(346,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(347,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(348,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(349,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(350,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(351,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(352,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(353,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(354,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(355,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(356,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(357,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(358,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(359,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(360,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(361,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(362,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(363,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(364,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(365,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(366,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(367,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(368,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(369,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(370,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(371,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(372,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(373,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(374,23) S_start_class(CFCParser *, CFCDocuComment 
*, char *, char *, char *, char *, char *) (isz = 64) (sz = 83)
     [[ Inlining inhibited by overrideable criterion ]]
  -> EXTERN: ../src/CFCParseHeader.y:(383,9) CFCVariable_inert(CFCVariable *)
  -> EXTERN: ../src/CFCParseHeader.y:(384,9) CFCClass_add_inert_var(CFCClass *, 
struct CFCVariable *)
  -> EXTERN: ../src/CFCParseHeader.y:(387,9) CFCClass_add_member_var(CFCClass 
*, struct CFCVariable *)
  -> EXTERN: ../src/CFCParseHeader.y:(389,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(394,9) strcmp(const char *, const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(394,16) CFCBase_get_cfc_class(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(395,9) CFCClass_add_function(CFCClass *, 
struct CFCFunction *)
  -> EXTERN: ../src/CFCParseHeader.y:(398,9) CFCClass_add_method(CFCClass *, 
struct CFCMethod *)
  -> EXTERN: ../src/CFCParseHeader.y:(400,5) CFCBase_decref(CFCBase *)
  -> CP_CLONE ../src/CFCParseHeader.y:(406,24) S_new_var..0(char *, char *, 
CFCType *, char *) (isz = 20) (sz = 33)
     [[ Inlining inhibited by overrideable criterion ]]
  -> EXTERN: ../src/CFCParseHeader.y:(406,34) CFCParser_dupe(CFCParser *, const 
char *)
  -> ../src/CFCParseHeader.y:(412,24) S_new_var(char *, char *, CFCType *, char 
*) (isz = 20) (sz = 33)
     [[ Inlining inhibited by overrideable criterion ]]
  -> EXTERN: ../src/CFCParseHeader.y:(412,34) CFCParser_dupe(CFCParser *, const 
char *)
  -> ../src/CFCParseHeader.y:(419,24) S_new_var(char *, char *, CFCType *, char 
*) (isz = 20) (sz = 33)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(425,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(431,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(438,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(444,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(450,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(457,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(465,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(472,24) S_new_sub(CFCParser *, CFCDocuComment *, 
char *, char *, CFCType *, char *, CFCParamList *) (isz = 92) (sz = 111)
     [[ Inlining inhibited by overrideable criterion ]]
  -> ../src/CFCParseHeader.y:(477,24) S_new_type(CFCParser *, int, char *, char 
*, char *) (isz = 246) (sz = 261)
     [[ Inlining would exceed -inline-max-size value (261>230)]]
  -> ../src/CFCParseHeader.y:(481,24) S_new_type(CFCParser *, int, char *, char 
*, char *) (isz = 246) (sz = 261)
     [[ Inlining would exceed -inline-max-size value (261>230)]]
  -> ../src/CFCParseHeader.y:(485,24) S_new_type(CFCParser *, int, char *, char 
*, char *) (isz = 246) (sz = 261)
     [[ Inlining would exceed -inline-max-size value (261>230)]]
  -> ../src/CFCParseHeader.y:(489,24) S_new_type(CFCParser *, int, char *, char 
*, char *) (isz = 246) (sz = 261)
     [[ Inlining would exceed -inline-max-size value (261>230)]]
  -> ../src/CFCParseHeader.y:(493,24) S_new_type(CFCParser *, int, char *, char 
*, char *) (isz = 246) (sz = 261)
     [[ Inlining would exceed -inline-max-size value (261>230)]]
  -> ../src/CFCParseHeader.y:(497,24) S_new_type(CFCParser *, int, char *, char 
*, char *) (isz = 246) (sz = 261)
     [[ Inlining would exceed -inline-max-size value (261>230)]]
  -> EXTERN: ../src/CFCParseHeader.y:(531,19) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(531,49) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(532,30) CFCParser_allocate(CFCParser *, 
size_t)
  -> EXTERN: ../src/CFCParseHeader.y:(533,5) sprintf(char *__restrict__, const 
char *__restrict__, ...)
  -> EXTERN: ../src/CFCParseHeader.y:(539,19) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(540,30) CFCParser_allocate(CFCParser *, 
size_t)
  -> EXTERN: ../src/CFCParseHeader.y:(541,5) sprintf(char *__restrict__, const 
char *__restrict__, ...)
  -> EXTERN: ../src/CFCParseHeader.y:(546,23) CFCParser_dupe(CFCParser *, const 
char *)
  -> EXTERN: ../src/CFCParseHeader.y:(550,19) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(551,30) CFCParser_allocate(CFCParser *, 
size_t)
  -> EXTERN: ../src/CFCParseHeader.y:(552,5) sprintf(char *__restrict__, const 
char *__restrict__, ...)
  -> EXTERN: ../src/CFCParseHeader.y:(558,19) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(558,49) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(559,30) CFCParser_allocate(CFCParser *, 
size_t)
  -> EXTERN: ../src/CFCParseHeader.y:(560,5) sprintf(char *__restrict__, const 
char *__restrict__, ...)
  -> CP_CLONE ../src/CFCParseHeader.y:(578,24) S_new_var..0(char *, char *, 
CFCType *, char *) (isz = 20) (sz = 33)
     [[ Inlining inhibited by overrideable criterion ]]
  -> EXTERN: ../src/CFCParseHeader.y:(583,24) CFCParamList_new(int)
  -> EXTERN: ../src/CFCParseHeader.y:(592,5) 
CFCParamList_set_variadic(CFCParamList *, int)
  -> EXTERN: ../src/CFCParseHeader.y:(597,5) 
CFCParamList_add_param(CFCParamList *, struct CFCVariable *, const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(598,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(603,5) 
CFCParamList_add_param(CFCParamList *, struct CFCVariable *, const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(604,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(608,24) CFCParamList_new(int)
  -> EXTERN: ../src/CFCParseHeader.y:(609,5) 
CFCParamList_add_param(CFCParamList *, struct CFCVariable *, const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(610,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(614,24) CFCParamList_new(int)
  -> EXTERN: ../src/CFCParseHeader.y:(615,5) 
CFCParamList_add_param(CFCParamList *, struct CFCVariable *, const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(616,5) CFCBase_decref(CFCBase *)
  -> EXTERN: ../src/CFCParseHeader.y:(622,19) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(622,49) strlen(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(623,30) CFCParser_allocate(CFCParser *, 
size_t)
  -> EXTERN: ../src/CFCParseHeader.y:(624,5) sprintf(char *__restrict__, const 
char *__restrict__, ...)
  -> EXTERN: ../src/CFCParseHeader.y:(627,22) CFCDocuComment_parse(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(630,23) CFCCBlock_new(const char *)
  -> EXTERN: ../src/CFCParseHeader.y:(631,23) CFCCBlock_new(const char *)


    Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, 
vec, par]



Non-optimizable loops:


LOOP BEGIN at ../src/CFCParseHeader.c(2014,3) inlined into 
../src/CFCParseHeader.c(3889,5)
   remark #15521: loop was not vectorized: loop control variable was not 
identified. Explicitly compute the iteration count before executing the loop or 
try using canonical loop form
LOOP END

    Report from: Code generation optimizations [cg]

../src/CFCParseHeader.c(1279,17):remark #34000: call to memcpy implemented 
inline with loads and stores with proven source (alignment, offset): (8, 0), 
and destination (alignment, offset): (8, 0)
===========================================================================

Begin optimization report for: S_new_type(CFCParser *, int, char *, char *, 
char *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (S_new_type(CFCParser *, int, char *, char *, char *)) 
[11/19=57.9%] ../src/CFCParseHeader.y(131,57)
  -> EXTERN: (134,28) strlen(const char *)
  -> EXTERN: (135,47) strlen(const char *)
  -> EXTERN: (147,10) strcmp(const char *, const char *)
  -> EXTERN: (148,13) strcmp(const char *, const char *)
  -> EXTERN: (149,13) strcmp(const char *, const char *)
  -> EXTERN: (150,13) strcmp(const char *, const char *)
  -> EXTERN: (151,13) strcmp(const char *, const char *)
  -> EXTERN: (152,13) strcmp(const char *, const char *)
  -> EXTERN: (153,13) strcmp(const char *, const char *)
  -> EXTERN: (154,13) strcmp(const char *, const char *)
  -> EXTERN: (155,13) strcmp(const char *, const char *)
  -> EXTERN: (156,13) strcmp(const char *, const char *)
  -> EXTERN: (157,13) strcmp(const char *, const char *)
  -> EXTERN: (158,13) strcmp(const char *, const char *)
  -> EXTERN: (159,13) strcmp(const char *, const char *)
  -> EXTERN: (160,13) strcmp(const char *, const char *)
  -> EXTERN: (162,16) CFCType_new_integer(int, const char *)
  -> EXTERN: (164,15) strcmp(const char *, const char *)
  -> EXTERN: (165,18) strcmp(const char *, const char *)
  -> EXTERN: (167,16) CFCType_new_float(int, const char *)
  -> EXTERN: (169,15) strcmp(const char *, const char *)
  -> EXTERN: (170,16) CFCType_new_void(int)
  -> EXTERN: (172,15) strcmp(const char *, const char *)
  -> EXTERN: (173,16) CFCType_new_va_list(void)
  -> EXTERN: (176,18) strcmp(const char *, const char *)
  -> EXTERN: (178,16) CFCType_new_arbitrary(struct CFCParcel *, const char *)
  -> EXTERN: (178,38) CFCParser_get_parcel(CFCParser *)
  -> EXTERN: (188,16) CFCType_new_object(int, struct CFCParcel *, const char *, 
int)
  -> EXTERN: (188,42) CFCParser_get_parcel(CFCParser *)
  -> EXTERN: (191,9) CFCUtil_die(const char *, ...)
  -> EXTERN: (195,30) CFCType_new_composite(int, CFCType *, int, const char *)
  -> EXTERN: (197,9) CFCBase_decref(CFCBase *)
  -> EXTERN: (201,30) CFCType_new_composite(int, CFCType *, int, const char *)
  -> EXTERN: (203,9) CFCBase_decref(CFCBase *)

===========================================================================

Begin optimization report for: S_new_sub(CFCParser *, CFCDocuComment *, char *, 
char *, CFCType *, char *, CFCParamList *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (S_new_sub(CFCParser *, CFCDocuComment *, char *, char *, 
CFCType *, char *, CFCParamList *)) [12/19=63.2%] ../src/CFCParseHeader.y(83,37)
  -> EXTERN: (90,25) strstr(const char *, const char *)
  -> EXTERN: (91,25) strstr(const char *, const char *)
  -> EXTERN: (92,25) strstr(const char *, const char *)
  -> EXTERN: (93,25) strstr(const char *, const char *)
  -> EXTERN: (95,9) CFCParser_get_class_final(CFCParser *)
  -> EXTERN: (103,13) CFCUtil_die(const char *, ...)
  -> EXTERN: (106,13) CFCUtil_die(const char *, ...)
  -> EXTERN: (108,25) CFCFunction_new(const char *, const char *, struct 
CFCType *, struct CFCParamList *, struct CFCDocuComment *, int)
  -> EXTERN: (113,13) CFCUtil_die(const char *, ...)
  -> EXTERN: (115,34) CFCParser_get_class_name(CFCParser *)
  -> EXTERN: (116,25) CFCMethod_new(const char *, const char *, struct CFCType 
*, struct CFCParamList *, struct CFCDocuComment *, const char *, int, int)
  -> EXTERN: (122,5) CFCBase_decref(CFCBase *)
  -> EXTERN: (123,5) CFCBase_decref(CFCBase *)
  -> EXTERN: (124,5) CFCBase_decref(CFCBase *)

===========================================================================

Begin optimization report for: S_new_var(char *, char *, CFCType *, char *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (S_new_var(char *, char *, CFCType *, char *)) [13/19=68.4%] 
../src/CFCParseHeader.y(63,71)
  -> EXTERN: (66,13) strcmp(const char *, const char *)
  -> EXTERN: (67,13) CFCUtil_die(const char *, ...)
  -> EXTERN: (72,24) CFCVariable_new(const char *, const char *, struct CFCType 
*, int)
  -> EXTERN: (75,5) CFCBase_decref(CFCBase *)

===========================================================================

Begin optimization report for: S_new_var..0(char *, char *, CFCType *, char *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (S_new_var..0(char *, char *, CFCType *, char *)) [14/19=73.7%] 
../src/CFCParseHeader.y(63,71)
  CLONED FROM: S_new_var(char *, char *, CFCType *, char 
*)(X,0x00000000,0x00000000,X,X)
  -> EXTERN: (66,13) strcmp(const char *, const char *)
  -> EXTERN: (67,13) CFCUtil_die(const char *, ...)
  -> EXTERN: (72,24) CFCVariable_new(const char *, const char *, struct CFCType 
*, int)
  -> EXTERN: (75,5) CFCBase_decref(CFCBase *)

===========================================================================

Begin optimization report for: S_start_class(CFCParser *, CFCDocuComment *, 
char *, char *, char *, char *, char *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (S_start_class(CFCParser *, CFCDocuComment *, char *, char *, 
char *, char *, char *)) [15/19=78.9%] ../src/CFCParseHeader.y(39,34)
  -> EXTERN: (40,30) CFCParser_get_file_spec(CFCParser *)
  -> EXTERN: (45,13) strstr(const char *, const char *)
  -> EXTERN: (46,13) CFCUtil_die(const char *, ...)
  -> EXTERN: (48,22) strstr(const char *, const char *)
  -> EXTERN: (49,22) strstr(const char *, const char *)
  -> EXTERN: (50,25) strstr(const char *, const char *)
  -> EXTERN: (52,5) CFCParser_set_class_name(CFCParser *, const char *)
  -> EXTERN: (53,5) CFCParser_set_class_final(CFCParser *, int)
  -> EXTERN: (54,23) CFCClass_create(struct CFCParcel *, const char *, const 
char *, const char *, struct CFCDocuComment *, struct CFCFileSpec *, const char 
*, int, int, int)
  -> EXTERN: (54,39) CFCParser_get_parcel(CFCParser *)
  -> EXTERN: (58,5) CFCBase_decref(CFCBase *)

===========================================================================

Begin optimization report for: yy_shift(yyParser *, int, int, YYMINORTYPE *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (yy_shift(yyParser *, int, int, YYMINORTYPE *)) [16/19=84.2%] 
../src/CFCParseHeader.c(1075,2)
  -> INLINE: (1085,5) yyStackOverflow(yyParser *) (isz = 29) (sz = 34)
    -> EXTERN: (1058,6) fprintf(FILE *__restrict__, const char *__restrict__, 
...)
    -> INLINE: (1061,33) yy_pop_parser_stack(yyParser *) (isz = 137) (sz = 145)
      -> EXTERN: (904,5) fprintf(FILE *__restrict__, const char *__restrict__, 
...)
      -> INLINE: (910,3) yy_destructor(yyParser *, unsigned char, YYMINORTYPE 
*) (isz = 102) (sz = 111)
        -> EXTERN: ../src/CFCParseHeader.y:(239,5) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(241,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(242,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(243,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(244,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(247,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(249,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(251,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(253,2) CFCBase_decref(CFCBase *)
        -> EXTERN: ../src/CFCParseHeader.y:(254,2) CFCBase_decref(CFCBase *)
  -> EXTERN: (1104,5) fprintf(FILE *__restrict__, const char *__restrict__, ...)
  -> EXTERN: (1105,5) fprintf(FILE *__restrict__, const char *__restrict__, ...)
  -> EXTERN: (1107,7) fprintf(FILE *__restrict__, const char *__restrict__, ...)
  -> EXTERN: (1108,5) fprintf(FILE *__restrict__, const char *__restrict__, ...)


    Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, 
vec, par]



Non-optimizable loops:


LOOP BEGIN at ../src/CFCParseHeader.c(1106,5)
   remark #15523: loop was not vectorized: loop control variable i was found, 
but loop iteration count cannot be computed before executing the loop
LOOP END

LOOP BEGIN at ../src/CFCParseHeader.c(1061,4) inlined into 
../src/CFCParseHeader.c(1968,5)
   remark #15535: loop was not vectorized: loop contains switch statement. 
Consider using if-else statement.   [ ../src/CFCParseHeader.c(796,3) ]
LOOP END
===========================================================================

Begin optimization report for: yy_syntax_error(yyParser *, int, YYMINORTYPE)

    Report from: Interprocedural optimizations [ipo]

DEAD STATIC FUNCTION: (yy_syntax_error(yyParser *, int, YYMINORTYPE)) 
../src/CFCParseHeader.c(1989,2)

===========================================================================

Begin optimization report for: yy_parse_failed(yyParser *)

    Report from: Interprocedural optimizations [ipo]

DEAD STATIC FUNCTION: (yy_parse_failed(yyParser *)) 
../src/CFCParseHeader.c(1968,2)

===========================================================================

Begin optimization report for: CFCParseHeaderTrace(FILE *, char *)

    Report from: Interprocedural optimizations [ipo]

INLINE REPORT: (CFCParseHeaderTrace(FILE *, char *)) [19/19=100.0%] 
../src/CFCParseHeader.c(574,62)

===========================================================================

Reply via email to