https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101216

            Bug ID: 101216
           Summary: [12 regression] setjmp/longjmp excess errors after
                    r12-1805
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: seurer at gcc dot gnu.org
  Target Milestone: ---

g:e9e2bad7251477db92ab9ebcdc010f9282dd9890, r12-1805
make  -k check-gcc RUNTESTFLAGS="analyzer.exp=gcc.dg/analyzer/setjmp-2.c"
FAIL: gcc.dg/analyzer/setjmp-2.c (test for excess errors)
# of expected passes            2
# of unexpected failures        1

spawn -ignore SIGHUP /home/seurer/gcc/git/build/gcc-test/gcc/xgcc
-B/home/seurer/gcc/git/build/gcc-test/gcc/
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c
-fdiagnostics-plain-output -fanalyzer -Wanalyzer-too-complex
-fanalyzer-call-summaries -fdiagnostics-show-line-numbers
-fdiagnostics-path-format=inline-events -fdiagnostics-show-caret -S -o
setjmp-2.s
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c: In
function 'test_2':
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c:30:7:
note: path
   30 |       __analyzer_dump_path (); /* { dg-message "path" } */
      |       ^~~~~~~~~~~~~~~~~~~~~~~
  'test_2': event 1
    |
    |   23 |   i = SETJMP(env);
    |      |       ^~~~~~
    |      |       |
    |      |       (1) 'setjmp' called here
    |
  'test_2': events 2-4
    |
    |   27 |   if (i != 0)
    |      |      ^
    |      |      |
    |      |      (2) following 'false' branch (when 'i == 0')...
    |......
    |   33 |     longjmp (env, 1);
    |      |     ~~~~~~~~~~~~~~~~
    |      |     |
    |      |     (3) ...to here
    |      |     (4) rewinding within 'test_2' from 'longjmp'...
    |
  'test_2': event 5
    |
    |   23 |   i = SETJMP(env);
    |      |       ^~~~~~
    |      |       |
    |      |       (5) ...to 'setjmp' (saved at (1))
    |
  'test_2': events 6-8
    |
    |   27 |   if (i != 0)
    |      |      ^
    |      |      |
    |      |      (6) following 'true' branch (when 'i != 0')...
    |   28 |     {
    |   29 |       foo (2);
    |      |       ~~~~~~~
    |      |       |
    |      |       (7) ...to here
    |   30 |       __analyzer_dump_path (); /* { dg-message "path" } */
    |      |       ~~~~~~~~~~~~~~~~~~~~~~~
    |      |       |
    |      |       (8) here
    |
In file included from
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c:5:
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c: In
function 'test_1':
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/test-setjmp.h:19:12:
note: in a call to function 'setjmp'
   19 | extern int setjmp(jmp_buf env);
      |            ^~~~~~
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c: In
function 'test_3':
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/test-setjmp.h:22:13:
note: in a call to function 'longjmp'
   22 | extern void longjmp(jmp_buf env, int val);
      |             ^~~~~~~
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/setjmp-2.c: In
function 'test_4':
/home/seurer/gcc/git/gcc-test/gcc/testsuite/gcc.dg/analyzer/test-setjmp.h:22:13:
note: in a call to function 'longjmp'
PASS: gcc.dg/analyzer/setjmp-2.c  (test for warnings, line 30)
PASS: gcc.dg/analyzer/setjmp-2.c expected multiline pattern lines 39-83 was
found: "\s*NN \|       __analyzer_dump_path \(\);.*\n      \|      
\^~~~~~~~~~~~~~~~~~~~~~~\n  'test_2': event 1.*\n    \|.*\n    \|   NN \|   i =
SETJMP\(env\);.*\n    \|      \|       \^~~~~~\n    \|      \|       \|.*\n   
\|      \|       \(1\) 'setjmp' called here.*\n    \|.*\n  'test_2': events
2-4.*\n    \|.*\n    \|   NN \|   if \(i != 0\).*\n    \|      \|      \^\n   
\|      \|      \|.*\n    \|      \|      \(2\) following 'false' branch \(when
'i == 0'\)\.\.\..*\n    \|\.\.\.\.\.\..*\n    \|   NN \|     longjmp \(env,
1\);.*\n    \|      \|     ~~~~~~~~~~~~~~~~\n    \|      \|     \|.*\n    \|   
  \|     \(3\) \.\.\.to here.*\n    \|      \|     \(4\) rewinding within
'test_2' from 'longjmp'\.\.\..*\n    \|.*\n  'test_2': event 5.*\n    \|.*\n   
\|   NN \|   i = SETJMP\(env\);.*\n    \|      \|       \^~~~~~\n    \|      \|
      \|.*\n    \|      \|       \(5\) \.\.\.to 'setjmp' \(saved at \(1\)\).*\n
   \|.*\n  'test_2': events 6-8.*\n    \|.*\n    \|   NN \|   if \(i != 0\).*\n
   \|      \|      \^\n    \|      \|      \|.*\n    \|      \|      \(6\)
following 'true' branch \(when 'i != 0'\)\.\.\..*\n    \|   NN \|     \{.*\n   
\|   NN \|       foo \(2\);.*\n    \|      \|       ~~~~~~~\n    \|      \|    
  \|.*\n    \|      \|       \(7\) \.\.\.to here.*\n    \|   NN \|      
__analyzer_dump_path \(\);.*\n    \|      \|       ~~~~~~~~~~~~~~~~~~~~~~~\n   
\|      \|       \|.*\n    \|      \|       \(8\) here.*\n    \|.*\n"
Executing on host: /home/seurer/gcc/git/build/gcc-test/gcc/xgcc
-B/home/seurer/gcc/git/build/gcc-test/gcc/ exceptions_enabled98668.cc   
-fdiagnostics-plain-output  -S -o exceptions_enabled98668.s    (timeout = 300)
spawn -ignore SIGHUP /home/seurer/gcc/git/build/gcc-test/gcc/xgcc
-B/home/seurer/gcc/git/build/gcc-test/gcc/ exceptions_enabled98668.cc
-fdiagnostics-plain-output -S -o exceptions_enabled98668.s
FAIL: gcc.dg/analyzer/setjmp-2.c (test for excess errors)
Excess errors:
   NN | extern int setjmp(jmp_buf env);
      |            ^~~~~~
   NN | extern void longjmp(jmp_buf env, int val);
      |             ^~~~~~~


commit e9e2bad7251477db92ab9ebcdc010f9282dd9890
Author: Martin Sebor <mse...@redhat.com>
Date:   Thu Jun 24 19:22:06 2021 -0600

    middle-end: add support for per-location warning groups.

Reply via email to