[LLVMdev] [PATCH] Prevent clang from throwing the diagnostics twice.

Chad Rosier mcrosier at codeaurora.org
Fri Nov 15 08:10:34 PST 2013


Hi Umesh,
Should the call to StringRef::getAsInteger() be predicated on the
A->getIssuedDiagnostics() call?

I assume the common case would be that we don't emit a diagnostic and thus
the below would be a faster implementation:

if (StringRef(A->getValue()).getAsInteger(10, Res)) {
  if (Diags) {
    if (A->getIssuedDiagnostics() ==  false){
      A->setIssuedDiagnostics(true);
      Diags->Report(diag::err_drv_invalid_int_value) << A->getAsString(Args)
                                                     << A->getValue();
    }
  }
}

 Chad

> Hi All,
>
> Clang pop up with the  "error: invalid integral value" diagnostics  twice
> ,when you enable the optimization  through  -O with a  non-integer value
>  i.e -O<non integer>  as show below
>
> $ clang -Of -S test.c
> error: invalid integral value 'f' in '-Of'
> error: invalid integral value 'f' in '-Of'
>
>
> Attached patch fix the issue as
>
> $ clang -Of -S test.c
> error: invalid integral value 'f' in '-Of'
>
>
> Clang version
> clang version 3.4
> (http://llvm.org/git/clang.git26297f57634994b4ae47a0774c372d6944265bb2)
> (
> http://llvm.org/git/llvm.git 868e74bdce7a2c49d60e2ef56a077b0aa7f2ba08)
>
> Target: i386-pc-linux-gnu
> Thread model: posix
>
> Builded successfully on trunk and is it ok to commit ??
>
>
> Thanks
> ~Umesh
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>


-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation




More information about the llvm-dev mailing list