On 11/6/18 4:56 PM, Martin Sebor wrote:
> In response to Joseph's comment I've removed the interaction
> with -Wpedantic from the updated patch.
> 
> In addition, to help detect bugs like the one in the test case
> for pr87886, I have also enhanced the detection of incompatible
> calls to include integer/real type mismatches so that calls like
> the one below are diagnosed:
> 
>   extern double sqrt ();
>   int f (int x)
>   {
>     return sqrt (x);   // passing int where double is expected
>   }
> 
> With the removal of the -Wpedantic interaction declaring abort()
> without a prototype is no longer diagnosed and so the test suite
> changes to add the prototype are not necessary.  I decided not
> to back them out because Jeff indicated a preference for making
> these kinds of improvements in general in an unrelated
> discussion.
> 
> 
> 
> gcc-83656.diff
> 
> PR c/83656 - missing -Wbuiltin-declaration-mismatch on declaration without 
> prototype
> 
> gcc/c/ChangeLog:
> 
>       PR c/83656
>       * c-decl.c (header_for_builtin_fn): Declare.
>       (diagnose_mismatched_decls): Diagnose declarations of built-in
>       functions without a prototype.
>       * c-typeck.c (maybe_warn_builtin_no_proto_arg): New function.
>       (convert_argument): Same.
>       (convert_arguments): Factor code out into convert_argument.
>       Detect mismatches between built-in formal arguments in calls
>       to built-in without prototype.
>       (build_conditional_expr): Same.
>       (type_or_builtin_type): New function.
>       (convert_for_assignment): Add argument.  Conditionally issue
>       warnings instead of errors for mismatches.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR c/83656
>       * gcc.dg/20021006-1.c
>       * gcc.dg/Wbuiltin-declaration-mismatch.c: New test.
>       * gcc.dg/Wbuiltin-declaration-mismatch-2.c: New test.
>       * gcc.dg/Wbuiltin-declaration-mismatch-3.c: New test.
>       * gcc.dg/Wbuiltin-declaration-mismatch-4.c: New test.
>       * gcc.dg/Walloca-16.c: Adjust.
>       * gcc.dg/Wrestrict-4.c: Adjust.
>       * gcc.dg/Wrestrict-5.c: Adjust.
>       * gcc.dg/atomic/stdatomic-generic.c: Adjust.
>       * gcc.dg/atomic/stdatomic-lockfree.c: Adjust.
>       * gcc.dg/initpri1.c: Adjust.
>       * gcc.dg/pr15698-1.c: Adjust.
>       * gcc.dg/pr69156.c: Adjust.
>       * gcc.dg/pr83463.c: Adjust.
>       * gcc.dg/redecl-4.c: Adjust.
>       * gcc.dg/tls/thr-init-2.c: Adjust.
>       * gcc.dg/torture/pr55890-2.c: Adjust.
>       * gcc.dg/torture/pr55890-3.c: Adjust.
>       * gcc.dg/torture/pr67741.c: Adjust.
>       * gcc.dg/torture/stackalign/sibcall-1.c: Adjust.
>       * gcc.dg/torture/tls/thr-init-1.c: Adjust.
>       * gcc.dg/tree-ssa/builtins-folding-gimple-ub.c: Adjust.
> 


> @@ -3547,8 +3598,24 @@ convert_arguments (location_t loc, vec<location_t> 
> arg_loc, tree typelist,
>        if (parmval == error_mark_node)
>       error_args = true;
>  
> +      if (!type && builtin_type && TREE_CODE (builtin_type) != VOID_TYPE)
> +     {
> +       /* For a call to a built-in function declared without a prototype,
> +          perform the coversions from the argument to the expected type
> +          but issue warnings rather than errors for any mismatches.
> +          Ignore the converted argument and use the PARMVAL obtained
> +          above by applying default coversions instead.  */
s/coversions/conversions/

Two of 'em in that comment.  OK with that nit fixed.

jeff


Reply via email to