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

            Bug ID: 91542
           Summary: internal representation of pointer reference shown in
                    error message
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ldrumm at rtps dot co
  Target Milestone: ---

Created attachment 46750
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46750&action=edit
reduced-testcase.c

Printing an error message for an invalid use of struct member access in a
pointer context is incorrectly printing the internal representation of the
pointer expression

```c
struct Node {
    int n_successors;
};

int foo(int n, struct Node *nodes[])
{
    nodes[n].n_successors; // `n_successors` should be accessed through a
struct dereference expression.
}
```

Using built-in specs.
COLLECT_GCC=./build/bin/gcc
COLLECT_LTO_WRAPPER=/home/luke/code/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/10.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --disable-bootstrap --enable-languages=c
--prefix=/home/luke/code/gcc/build
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.0.0 20190824 (experimental) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c99' '-mtune=generic'
'-march=x86-64'
 /home/luke/code/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/10.0.0/cc1 -E -quiet
-v -imultiarch x86_64-linux-gnu /home/luke/code/cc/src/gcc-bug.c -mtune=generic
-march=x86-64 -std=c99 -fpch-preprocess -o gcc-bug.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/home/luke/code/gcc/build/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/luke/code/gcc/build/lib/gcc/x86_64-pc-linux-gnu/10.0.0/include
 /usr/local/include
 /home/luke/code/gcc/build/include
 /home/luke/code/gcc/build/lib/gcc/x86_64-pc-linux-gnu/10.0.0/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c99' '-mtune=generic'
'-march=x86-64'
 /home/luke/code/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/10.0.0/cc1
-fpreprocessed gcc-bug.i -quiet -dumpbase gcc-bug.c -mtune=generic
-march=x86-64 -auxbase gcc-bug -std=c99 -version -o gcc-bug.s
GNU C99 (GCC) version 10.0.0 20190824 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 9.2.1 20190821, GMP version 6.1.2, MPFR
version 4.0.2, MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C99 (GCC) version 10.0.0 20190824 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 9.2.1 20190821, GMP version 6.1.2, MPFR
version 4.0.2, MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: c4c9fdc5350b445a18baa11b2b776373
/home/luke/code/cc/src/gcc-bug.c: In function ‘foo’:
/home/luke/code/cc/src/gcc-bug.c:7:13: error: ‘*(nodes + (sizetype)((long
unsigned int)n * 8))’ is a pointer; did you mean to use ‘->’?
    7 |     nodes[n].n_successors;
      |             ^
      |             ->

Reply via email to