Thread: compiler warnings with GCC 4.5

compiler warnings with GCC 4.5

From
Peter Eisentraut
Date:
Only these few:

read.c: In function ‘nodeRead’:
read.c:370:3: warning: case value ‘1000001’ not in enumerated type
‘NodeTag’
read.c:300:3: warning: case value ‘1000002’ not in enumerated type
‘NodeTag’
read.c:294:3: warning: case value ‘1000003’ not in enumerated type
‘NodeTag’
read.c:374:3: warning: case value ‘1000004’ not in enumerated type
‘NodeTag’

This can be fixed by changing
   switch (type)

to
   switch ((int) type)


preproc.y: In function ‘base_yyparse’:
preproc.y:8043:19: warning: operation on ‘yyval.str’ may be undefined

The code in question looks like

|  SETOF SimpleTypename opt_array_bounds   {   $$ = $$ = cat_str(3, make_str("setof"), $2, $3.str); }       ^^^^^^^

It is converted from the main grammar, so it looks like a bug in the
conversion routine.



Re: compiler warnings with GCC 4.5

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> read.c: In function ‘nodeRead’:
> read.c:370:3: warning: case value ‘1000001’ not in enumerated type
> ‘NodeTag’

> This can be fixed by changing
>     switch (type)
> to
>     switch ((int) type)

No objection from here.  We don't attempt to cover all possible NodeTags
in that switch anyway, so I don't see that we're losing any error
detection capability by adding the cast.

> preproc.y: In function ‘base_yyparse’:
> preproc.y:8043:19: warning: operation on ‘yyval.str’ may be undefined

> The code in question looks like

> |  SETOF SimpleTypename opt_array_bounds
>     {   $$ = $$ = cat_str(3, make_str("setof"), $2, $3.str); }
>         ^^^^^^^

> It is converted from the main grammar, so it looks like a bug in the
> conversion routine.

The double assignment looks inefficient, but I bet what it's really unhappy
about is that one of the cat_str arguments has a .str suffix and the
other doesn't --- why is that?
        regards, tom lane