LINUX.ORG.RU

История изменений

Исправление fluorite, (текущая версия) :

clang -Xclang -ast-dump main.c

TranslationUnitDecl 0x2199f98 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x219a858 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x219a530 '__int128'
|-TypedefDecl 0x219a8c8 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x219a550 'unsigned __int128'
|-TypedefDecl 0x219abd0 <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag'
| `-RecordType 0x219a9a0 'struct __NSConstantString_tag'
|   `-Record 0x219a920 '__NSConstantString_tag'
|-TypedefDecl 0x219ac78 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
| `-PointerType 0x219ac30 'char *'
|   `-BuiltinType 0x219a030 'char'
|-TypedefDecl 0x21d9830 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list 'struct __va_list_tag [1]'
| `-ConstantArrayType 0x219af10 'struct __va_list_tag [1]' 1 
|   `-RecordType 0x219ad50 'struct __va_list_tag'
|     `-Record 0x219acd0 '__va_list_tag'
`-FunctionDecl 0x21d98e8 <main.c:1:1, line:5:1> line:1:5 main 'int ()'
  `-CompoundStmt 0x21d9ba0 <col:12, line:5:1>
    |-DeclStmt 0x21d9a50 <line:2:3, col:8>
    | `-VarDecl 0x21d99e8 <col:3, col:7> col:7 used a 'int'
    |-DeclStmt 0x21d9ae8 <line:3:3, col:8>
    | `-VarDecl 0x21d9a80 <col:3, col:7> col:7 used b 'int'
    `-ReturnStmt 0x21d9b90 <line:4:3, col:14>
      `-BinaryOperator 0x21d9b70 <col:10, col:14> 'int' '*'
        |-ImplicitCastExpr 0x21d9b40 <col:10> 'int' <LValueToRValue>
        | `-DeclRefExpr 0x21d9b00 <col:10> 'int' lvalue Var 0x21d99e8 'a' 'int'
        `-ImplicitCastExpr 0x21d9b58 <col:14> 'int' <LValueToRValue>
          `-DeclRefExpr 0x21d9b20 <col:14> 'int' lvalue Var 0x21d9a80 'b' 'int'

$ cat main.c
int main() {
  int a;
  int b;
  return  a * b;
}

Исходная версия fluorite, :

TranslationUnitDecl 0x2199f98 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x219a858 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x219a530 '__int128'
|-TypedefDecl 0x219a8c8 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x219a550 'unsigned __int128'
|-TypedefDecl 0x219abd0 <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag'
| `-RecordType 0x219a9a0 'struct __NSConstantString_tag'
|   `-Record 0x219a920 '__NSConstantString_tag'
|-TypedefDecl 0x219ac78 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
| `-PointerType 0x219ac30 'char *'
|   `-BuiltinType 0x219a030 'char'
|-TypedefDecl 0x21d9830 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list 'struct __va_list_tag [1]'
| `-ConstantArrayType 0x219af10 'struct __va_list_tag [1]' 1 
|   `-RecordType 0x219ad50 'struct __va_list_tag'
|     `-Record 0x219acd0 '__va_list_tag'
`-FunctionDecl 0x21d98e8 <main.c:1:1, line:5:1> line:1:5 main 'int ()'
  `-CompoundStmt 0x21d9ba0 <col:12, line:5:1>
    |-DeclStmt 0x21d9a50 <line:2:3, col:8>
    | `-VarDecl 0x21d99e8 <col:3, col:7> col:7 used a 'int'
    |-DeclStmt 0x21d9ae8 <line:3:3, col:8>
    | `-VarDecl 0x21d9a80 <col:3, col:7> col:7 used b 'int'
    `-ReturnStmt 0x21d9b90 <line:4:3, col:14>
      `-BinaryOperator 0x21d9b70 <col:10, col:14> 'int' '*'
        |-ImplicitCastExpr 0x21d9b40 <col:10> 'int' <LValueToRValue>
        | `-DeclRefExpr 0x21d9b00 <col:10> 'int' lvalue Var 0x21d99e8 'a' 'int'
        `-ImplicitCastExpr 0x21d9b58 <col:14> 'int' <LValueToRValue>
          `-DeclRefExpr 0x21d9b20 <col:14> 'int' lvalue Var 0x21d9a80 'b' 'int'

$ cat main.c
int main() {
  int a;
  int b;
  return  a * b;
}