[PATCH] D66827: Add support for MS qualifiers __ptr32, __ptr64, __sptr, __uptr.

Fabian Maurer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 17 09:37:10 PDT 2019


DarkShadow44 added a comment.

@akhuang Thanks for looking into this!

I've found something else, I've written a small dumper to demonstrate. Pardon the long comment please.

Program:

  typedef int* __ptr32 PINT32;
  typedef int* PINT64;
  
  struct s1
  {
  	PINT32 i32;
  	PINT64 i64;
  };

AST:

  Kind: 'TranslationUnit(300)', Type: '', Name: '/home/fabian/Programming/Wine/wine-git/tools/test.c'
          Kind: 'TypedefDecl(20)', Type: '__ptr32_sptr int *', Name: 'PINT32'
          Kind: 'TypedefDecl(20)', Type: 'PINT64', Name: 'PINT64'
          Kind: 'StructDecl(2)', Type: 'struct s1', Name: 's1'
                  Kind: 'FieldDecl(6)', Type: '__ptr32_sptr int *', Name: 'i32'
                          Kind: 'TypeRef(43)', Type: '__ptr32_sptr int *', Name: 'PINT32'
                  Kind: 'FieldDecl(6)', Type: 'PINT64', Name: 'i64'
                          Kind: 'TypeRef(43)', Type: 'PINT64', Name: 'PINT64'

Note the difference between

  Type: '__ptr32_sptr int *', Name: 'PINT32'
  Type: 'PINT64', Name: 'PINT64'

3 Issues I have here:

- __ptr32_sptr doesn't exist and seems wrong
- The __ptr32 part should be right of the asterisk
- Why does PINT64 have PINT64 as type, but PINT32 not PINT32?

I'm not sure if this is/should still be part of this patchset or even is an issue, just pointing out inconsistencies I noticed - hope I'm not a bother.

Dumper attached, for convenience.
F10298035: dumper.cpp <https://reviews.llvm.org/F10298035>


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D66827





More information about the llvm-commits mailing list