Skip to content

Instantly share code, notes, and snippets.

@rcythr
Created April 3, 2024 15:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rcythr/76a31625739b4e77260c5e166cd39119 to your computer and use it in GitHub Desktop.
Save rcythr/76a31625739b4e77260c5e166cd39119 to your computer and use it in GitHub Desktop.
TranslationUnitDecl 0x6845b8 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x684e20 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x684b80 '__int128'
|-TypedefDecl 0x684e90 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x684ba0 'unsigned __int128'
|-TypedefDecl 0x685208 <<invalid sloc>> <invalid sloc> implicit __NSConstantString '__NSConstantString_tag'
| `-RecordType 0x684f80 '__NSConstantString_tag'
| `-CXXRecord 0x684ee8 '__NSConstantString_tag'
|-TypedefDecl 0x6852a0 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
| `-PointerType 0x685260 'char *'
| `-BuiltinType 0x684660 'char'
|-TypedefDecl 0x6ced28 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list '__va_list_tag[1]'
| `-ConstantArrayType 0x6cecd0 '__va_list_tag[1]' 1
| `-RecordType 0x685390 '__va_list_tag'
| `-CXXRecord 0x6852f8 '__va_list_tag'
|-ClassTemplateDecl 0x6ceed0 <larrow.cc:2:1, line:6:1> line:3:8 larrow
| |-TemplateTypeParmDecl 0x6ced80 <line:2:10, col:16> col:16 referenced class depth 0 index 0 T
| |-CXXRecordDecl 0x6cee40 <line:3:1, line:6:1> line:3:8 struct larrow definition
| | |-DefinitionData standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
| | | |-DefaultConstructor
| | | |-CopyConstructor simple trivial has_const_param needs_implicit implicit_has_const_param
| | | |-MoveConstructor exists simple trivial needs_implicit
| | | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
| | | |-MoveAssignment exists simple trivial needs_implicit
| | | `-Destructor simple irrelevant trivial needs_implicit
| | |-CXXRecordDecl 0x6cf110 <col:1, col:8> col:8 implicit referenced struct larrow
| | |-CXXConstructorDecl 0x6cf338 <line:4:5, col:29> col:5 larrow<T> 'void (T *)'
| | | |-ParmVarDecl 0x6cf208 <col:12, col:15> col:15 referenced a_ 'T *'
| | | |-CXXCtorInitializer Field 0x6cf3f8 'a' 'T *'
| | | | `-ParenListExpr 0x6cf480 <col:22, col:25> 'NULL TYPE'
| | | | `-DeclRefExpr 0x6cf460 <col:23> 'T *' lvalue ParmVar 0x6cf208 'a_' 'T *'
| | | `-CompoundStmt 0x6cf4c8 <col:27, col:29>
| | `-FieldDecl 0x6cf3f8 <line:5:5, col:8> col:8 a 'T *'
| `-ClassTemplateSpecializationDecl 0x7036e8 <line:2:1, line:6:1> line:3:8 struct larrow definition
| |-DefinitionData pass_in_registers standard_layout trivially_copyable has_user_declared_ctor can_const_default_init
| | |-DefaultConstructor
| | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
| | |-MoveConstructor exists simple trivial
| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
| | |-MoveAssignment exists simple trivial needs_implicit
| | `-Destructor simple irrelevant trivial
| |-TemplateArgument type 'C'
| | `-RecordType 0x700030 'C'
| | `-CXXRecord 0x6fff98 'C'
| |-CXXRecordDecl 0x703bc8 <col:1, col:8> col:8 implicit struct larrow
| |-CXXConstructorDecl 0x703df0 <line:4:5, col:29> col:5 used larrow 'void (C *)'
| | |-ParmVarDecl 0x703cc8 <col:12, col:15> col:15 used a_ 'C *'
| | |-CXXCtorInitializer Field 0x703ec0 'a' 'C *'
| | | `-ImplicitCastExpr 0x7063f8 <col:23> 'C *' <LValueToRValue>
| | | `-DeclRefExpr 0x7063b8 <col:23> 'C *' lvalue ParmVar 0x703cc8 'a_' 'C *'
| | `-CompoundStmt 0x6cf4c8 <col:27, col:29>
| |-FieldDecl 0x703ec0 <line:5:5, col:8> col:8 referenced a 'C *'
| |-CXXDestructorDecl 0x703f28 <line:3:8> col:8 implicit referenced ~larrow 'void () noexcept' inline default trivial
| |-CXXConstructorDecl 0x705ae8 <col:8> col:8 implicit constexpr larrow 'void (const larrow<C> &)' inline default trivial noexcept-unevaluated 0x705ae8
| | `-ParmVarDecl 0x705bf8 <col:8> col:8 'const larrow<C> &'
| `-CXXConstructorDecl 0x705ca8 <col:8> col:8 implicit used constexpr larrow 'void (larrow<C> &&) noexcept' inline default trivial
| |-ParmVarDecl 0x705db8 <col:8> col:8 used 'larrow<C> &&'
| |-CXXCtorInitializer Field 0x703ec0 'a' 'C *'
| | `-ImplicitCastExpr 0x706030 <col:8> 'C *' <LValueToRValue>
| | `-MemberExpr 0x706000 <col:8> 'C *' xvalue .a 0x703ec0
| | `-CXXStaticCastExpr 0x705fd0 <col:8> 'larrow<C>' xvalue static_cast<struct larrow<struct C> &&> <NoOp>
| | `-DeclRefExpr 0x705fa0 <col:8> 'larrow<C>' lvalue ParmVar 0x705db8 '' 'larrow<C> &&'
| `-CompoundStmt 0x706070 <col:8>
|-FunctionTemplateDecl 0x6cfa48 <line:8:1, line:11:1> line:9:3 operator<
| |-TemplateTypeParmDecl 0x6cf4d8 <line:8:11, col:17> col:17 referenced class depth 0 index 0 T
| |-TemplateTypeParmDecl 0x6cf558 <col:20, col:26> col:26 referenced class depth 0 index 1 R
| |-FunctionDecl 0x6cf9a8 <line:9:1, line:11:1> line:9:3 operator< 'R (R (T::*)(), larrow<T>)'
| | |-ParmVarDecl 0x6cf798 <col:13, col:24> col:21 referenced f 'R (T::*)()'
| | |-ParmVarDecl 0x6cf890 <col:27, col:37> col:37 referenced it 'larrow<T>'
| | `-CompoundStmt 0x6cfc68 <col:41, line:11:1>
| | `-ReturnStmt 0x6cfc58 <line:10:5, col:23>
| | `-CallExpr 0x6cfc38 <col:12, col:23> '<dependent type>'
| | `-ParenExpr 0x6cfc18 <col:12, col:21> '<dependent type>'
| | `-BinaryOperator 0x6cfbf8 <col:13, col:20> '<dependent type>' '->*'
| | |-CXXDependentScopeMemberExpr 0x6cfb90 <col:13, col:16> '<dependent type>' lvalue .a
| | | `-DeclRefExpr 0x6cfb70 <col:13> 'larrow<T>' lvalue ParmVar 0x6cf890 'it' 'larrow<T>'
| | `-DeclRefExpr 0x6cfbd8 <col:20> 'R (T::*)()' lvalue ParmVar 0x6cf798 'f' 'R (T::*)()'
| `-FunctionDecl 0x704398 <line:9:1, line:11:1> line:9:3 used operator< 'void (void (C::*)(), larrow<C>)'
| |-TemplateArgument type 'C'
| | `-RecordType 0x700030 'C'
| | `-CXXRecord 0x6fff98 'C'
| |-TemplateArgument type 'void'
| | `-BuiltinType 0x684620 'void'
| |-ParmVarDecl 0x7041a8 <col:13, col:24> col:21 used f 'void (C::*)()'
| |-ParmVarDecl 0x704280 <col:27, col:37> col:37 used it 'larrow<C>':'larrow<C>'
| `-CompoundStmt 0x706548 <col:41, line:11:1>
| `-ReturnStmt 0x706538 <line:10:5, col:23>
| `-CXXMemberCallExpr 0x706518 <col:12, col:23> 'void':'void'
| `-ParenExpr 0x7064f8 <col:12, col:21> '<bound member function type>'
| `-BinaryOperator 0x7064d8 <col:13, col:20> '<bound member function type>' '->*'
| |-ImplicitCastExpr 0x7064a8 <col:13, col:16> 'C *' <LValueToRValue>
| | `-MemberExpr 0x706458 <col:13, col:16> 'C *' lvalue .a 0x703ec0
| | `-DeclRefExpr 0x706438 <col:13> 'larrow<C>':'larrow<C>' lvalue ParmVar 0x704280 'it' 'larrow<C>':'larrow<C>'
| `-ImplicitCastExpr 0x7064c0 <col:20> 'void (C::*)()' <LValueToRValue>
| `-DeclRefExpr 0x706488 <col:20> 'void (C::*)()' lvalue ParmVar 0x7041a8 'f' 'void (C::*)()'
|-FunctionTemplateDecl 0x6ffda8 <line:13:1, line:16:1> line:14:11 operator-
| |-TemplateTypeParmDecl 0x6cfc80 <line:13:10, col:16> col:16 referenced class depth 0 index 0 T
| |-FunctionDecl 0x6ffd08 <line:14:1, line:16:1> line:14:11 operator- 'larrow<T> (T &)'
| | |-ParmVarDecl 0x6ffc08 <col:21, col:24> col:24 referenced a 'T &'
| | `-CompoundStmt 0x6fff80 <col:27, line:16:1>
| | `-ReturnStmt 0x6fff70 <line:15:5, col:24>
| | `-CXXUnresolvedConstructExpr 0x6fff48 <col:12, col:24> 'larrow<T>' 'larrow<T>'
| | `-UnaryOperator 0x6fff30 <col:22, col:23> '<dependent type>' prefix '&' cannot overflow
| | `-DeclRefExpr 0x6fff10 <col:23> 'T' lvalue ParmVar 0x6ffc08 'a' 'T &'
| `-FunctionDecl 0x703998 <line:14:1, line:16:1> line:14:11 used operator- 'larrow<C> (C &)'
| |-TemplateArgument type 'C'
| | `-RecordType 0x700030 'C'
| | `-CXXRecord 0x6fff98 'C'
| |-ParmVarDecl 0x703898 <col:21, col:24> col:24 used a 'C &'
| `-CompoundStmt 0x7063a0 <col:27, line:16:1>
| `-ReturnStmt 0x706390 <line:15:5, col:24>
| `-ExprWithCleanups 0x706378 <col:12, col:24> 'larrow<C>':'larrow<C>'
| `-CXXConstructExpr 0x706348 <col:12, col:24> 'larrow<C>':'larrow<C>' 'void (larrow<C> &&) noexcept' elidable
| `-MaterializeTemporaryExpr 0x706300 <col:12, col:24> 'larrow<C>':'larrow<C>' xvalue
| `-CXXFunctionalCastExpr 0x7062d8 <col:12, col:24> 'larrow<C>':'larrow<C>' functional cast to larrow<struct C> <ConstructorConversion>
| `-CXXConstructExpr 0x7062a8 <col:12, col:24> 'larrow<C>':'larrow<C>' 'void (C *)'
| `-UnaryOperator 0x706268 <col:22, col:23> 'C *' prefix '&' cannot overflow
| `-DeclRefExpr 0x706220 <col:23> 'C':'C' lvalue ParmVar 0x703898 'a' 'C &'
|-CXXRecordDecl 0x6fff98 <line:18:1, line:20:1> line:18:8 referenced struct C definition
| |-DefinitionData pass_in_registers empty aggregate standard_layout trivially_copyable pod trivial literal has_constexpr_non_copy_move_ctor can_const_default_init
| | |-DefaultConstructor exists trivial constexpr defaulted_is_constexpr
| | |-CopyConstructor simple trivial has_const_param implicit_has_const_param
| | |-MoveConstructor exists simple trivial
| | |-CopyAssignment simple trivial has_const_param needs_implicit implicit_has_const_param
| | |-MoveAssignment exists simple trivial needs_implicit
| | `-Destructor simple irrelevant trivial needs_implicit
| |-CXXRecordDecl 0x7000b8 <col:1, col:8> col:8 implicit struct C
| |-CXXMethodDecl 0x7001c8 <line:19:5, col:21> col:10 used f 'void ()'
| | `-CompoundStmt 0x7002e0 <col:14, col:21>
| | `-BinaryOperator 0x7002c0 <col:16, col:18> 'int' '+'
| | |-IntegerLiteral 0x700280 <col:16> 'int' 3
| | `-IntegerLiteral 0x7002a0 <col:18> 'int' 5
| |-CXXConstructorDecl 0x7004a8 <line:18:8> col:8 implicit used constexpr C 'void () noexcept' inline default trivial
| | `-CompoundStmt 0x700928 <col:8>
| |-CXXConstructorDecl 0x7005a8 <col:8> col:8 implicit constexpr C 'void (const C &)' inline default trivial noexcept-unevaluated 0x7005a8
| | `-ParmVarDecl 0x7006b8 <col:8> col:8 'const C &'
| `-CXXConstructorDecl 0x700768 <col:8> col:8 implicit constexpr C 'void (C &&)' inline default trivial noexcept-unevaluated 0x700768
| `-ParmVarDecl 0x700878 <col:8> col:8 'C &&'
`-FunctionDecl 0x700350 <line:22:1, line:25:1> line:22:5 main 'int ()'
`-CompoundStmt 0x706190 <col:12, line:25:1>
|-DeclStmt 0x700a20 <line:23:5, col:8>
| `-VarDecl 0x700428 <col:5, col:7> col:7 used x 'C' callinit
| `-CXXConstructExpr 0x7009f8 <col:7> 'C' 'void () noexcept'
`-ExprWithCleanups 0x706178 <line:24:5, col:14> 'void':'void'
`-CXXOperatorCallExpr 0x706140 <col:5, col:14> 'void':'void' '<'
|-ImplicitCastExpr 0x706128 <col:12> 'void (*)(void (C::*)(), larrow<C>)' <FunctionToPointerDecay>
| `-DeclRefExpr 0x7060b0 <col:12> 'void (void (C::*)(), larrow<C>)' lvalue Function 0x704398 'operator<' 'void (void (C::*)(), larrow<C>)'
|-ParenExpr 0x703638 <col:5, col:11> 'void (C::*)()'
| `-UnaryOperator 0x703620 <col:6, col:10> 'void (C::*)()' prefix '&' cannot overflow
| `-DeclRefExpr 0x700a88 <col:7, col:10> 'void ()' CXXMethod 0x7001c8 'f' 'void ()'
`-CXXConstructExpr 0x706080 <col:13, col:14> 'larrow<C>':'larrow<C>' 'void (larrow<C> &&) noexcept' elidable
`-MaterializeTemporaryExpr 0x705e38 <col:13, col:14> 'larrow<C>':'larrow<C>' xvalue
`-CXXOperatorCallExpr 0x703b30 <col:13, col:14> 'larrow<C>':'larrow<C>' '-'
|-ImplicitCastExpr 0x703b18 <col:13> 'larrow<C> (*)(C &)' <FunctionToPointerDecay>
| `-DeclRefExpr 0x703a98 <col:13> 'larrow<C> (C &)' lvalue Function 0x703998 'operator-' 'larrow<C> (C &)'
`-DeclRefExpr 0x703658 <col:14> 'C' lvalue Var 0x700428 'x' 'C'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment