Thread

Commits

  1. Cast to void in StaticAssertExpr, not its callers.

  1. Add void cast to StaticAssertExpr?

    Tom Lane <tgl@sss.pgh.pa.us> — 2018-02-15T17:19:46Z

    While poking around in buildfarm results, I noticed that some members are
    giving warnings like
    
    analyze.c:386:181: warning: expression result unused [-Wunused-value]
    
    which is apparently caused by the use of StaticAssertExpr in
    
    #define AllocSetContextCreate(parent, name, allocparams) \
        (StaticAssertExpr(__builtin_constant_p(name), \
                          "Use AllocSetContextCreateExtended with MEMCONTEXT_COPY_NAME for non-constant context names"), \
         AllocSetContextCreateExtended(parent, name, 0, allocparams))
    
    Now, I could silence those warnings via
    
    -    (StaticAssertExpr(__builtin_constant_p(name), \
    +    ((void) StaticAssertExpr(__builtin_constant_p(name), \
    
    as I see has already been done in two similar uses of StaticAssertExpr in
    c.h.  However, this seems a bit silly.  Wouldn't it be better to put
    the void cast right into StaticAssertExpr?
    
    			regards, tom lane
    
    
    
  2. Re: Add void cast to StaticAssertExpr?

    Andres Freund <andres@anarazel.de> — 2018-02-15T18:04:52Z

    Hi,
    
    On 2018-02-15 12:19:46 -0500, Tom Lane wrote:
    > While poking around in buildfarm results, I noticed that some members are
    > giving warnings like
    > 
    > analyze.c:386:181: warning: expression result unused [-Wunused-value]
    > 
    > which is apparently caused by the use of StaticAssertExpr in
    > 
    > #define AllocSetContextCreate(parent, name, allocparams) \
    >     (StaticAssertExpr(__builtin_constant_p(name), \
    >                       "Use AllocSetContextCreateExtended with MEMCONTEXT_COPY_NAME for non-constant context names"), \
    >      AllocSetContextCreateExtended(parent, name, 0, allocparams))
    > 
    > Now, I could silence those warnings via
    > 
    > -    (StaticAssertExpr(__builtin_constant_p(name), \
    > +    ((void) StaticAssertExpr(__builtin_constant_p(name), \
    > 
    > as I see has already been done in two similar uses of StaticAssertExpr in
    > c.h.  However, this seems a bit silly.  Wouldn't it be better to put
    > the void cast right into StaticAssertExpr?
    
    No argument against it here.
    
    Greetings,
    
    Andres Freund