As a side note: > (CompoundStmt 0x1c087c0 > (DeclStmt 0x1c086f0 > 0x1c08580 "struct X;" > (DeclStmt 0x1c08740 > 0x1c08710 "struct X x" > (DeclRefExpr 0x1c08770 'struct X' Var='x' 0x1c08710) > (ReturnStmt 0x1c087b0 > (IntegerLiteral 0x1c08790 'int' 0))) ... doesn't seem to have balanced parentheses.