[PATCH] D119528: [Clang][Sema] Add a missing regression test about Wliteral-range

Aaron Ballman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Feb 14 06:18:12 PST 2022


aaron.ballman added a comment.

In D119528#3316311 <https://reviews.llvm.org/D119528#3316311>, @junaire wrote:

>> I think we should probably have test coverage for `long double` as well, but I also wonder whether it makes sense to add coverage for the small floating-point types (like `_Float16`) as well, or whether we already have coverage for those elsewhere.
>
> Test long double is fine for me. But I'm not really sure if we need to test for these half-precision floats, as they are part of clang language extension and not supported in all targets. IMHO, maybe we can just simply test these normal or standard floats first?

I'm fine with that approach. Thanks for adding the `long double` support, but it looks like the precommit CI spotted an issue:

  FAIL: Clang :: Sema/warn-literal-range.c (12332 of 29830)
  ******************** TEST 'Clang :: Sema/warn-literal-range.c' FAILED ********************
  Script:
  --
  : 'RUN: at line 1';   c:\ws\w32-1\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w32-1\llvm-project\premerge-checks\build\lib\clang\15.0.0\include -nostdsysteminc -std=c99 -verify C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c
  --
  Exit Code: 1
  
  Command Output (stdout):
  --
  $ ":" "RUN: at line 1"
  $ "c:\ws\w32-1\llvm-project\premerge-checks\build\bin\clang.exe" "-cc1" "-internal-isystem" "c:\ws\w32-1\llvm-project\premerge-checks\build\lib\clang\15.0.0\include" "-nostdsysteminc" "-std=c99" "-verify" "C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c"
  # command stderr:
  error: 'warning' diagnostics expected but not seen: 
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 29: magnitude of floating-point constant too small for type 'long double'; minimum is 3.64519953188247460253E-4951
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 31: magnitude of floating-point constant too large for type 'long double'; maximum is 1.18973149535723176502E+4932
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 35: magnitude of floating-point constant too small for type 'long double'; minimum is 3.64519953188247460253E-4951
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 37: magnitude of floating-point constant too large for type 'long double'; maximum is 1.18973149535723176502E+4932
  
  error: 'warning' diagnostics seen but not expected: 
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 29: magnitude of floating-point constant too small for type 'long double'; minimum is 4.9406564584124654E-324
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 31: magnitude of floating-point constant too large for type 'long double'; maximum is 1.7976931348623157E+308
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 35: magnitude of floating-point constant too small for type 'long double'; minimum is 4.9406564584124654E-324
  
    File C:\ws\w32-1\llvm-project\premerge-checks\clang\test\Sema\warn-literal-range.c Line 37: magnitude of floating-point constant too large for type 'long double'; maximum is 1.7976931348623157E+308
  
  8 errors generated.
  
  
  error: command failed with exit status: 1
  
  --
  
  ********************

You might need to add a target triple to the test to specify exactly which target you are testing for. Bonus points if you pick a second target with different range of values. You can do that with something like:

  // RUN: %clang_cc1 -triple=whatever -std=c99 -verify=whatever %s
  // RUN: %clang_cc1 -triple=whatever-else -std=c99 -verify=whatever-else %s
  
  long double ld5 = 0x0.42p+42000L; // whatever-warning {{magnitude of floating-point constant too large for type 'long double'; maximum is 1.18973149535723176502E+4932}} \
                                                                whatever-else-warning {{magnitude of floating-point constant too large for type 'long double'; maximum is 12}} \

(the identifier after `-verify=` is used in place of the `expected` in diagnostic verification so you can vary which warnings are checked against which RUN lines.)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D119528/new/

https://reviews.llvm.org/D119528



More information about the cfe-commits mailing list