199451b44SJordan Rupprecht //----------------------------------------------------------------------------// 299451b44SJordan Rupprecht // Struct loading declarations. 399451b44SJordan Rupprecht 499451b44SJordan Rupprecht struct StructFirstMember { int i; }; 599451b44SJordan Rupprecht struct StructBehindPointer { int i; }; 699451b44SJordan Rupprecht struct StructBehindRef { int i; }; 799451b44SJordan Rupprecht struct StructMember { int i; }; 899451b44SJordan Rupprecht 999451b44SJordan Rupprecht StructBehindRef struct_instance; 1099451b44SJordan Rupprecht 1199451b44SJordan Rupprecht struct SomeStruct { 1299451b44SJordan Rupprecht StructFirstMember *first; 1399451b44SJordan Rupprecht StructBehindPointer *ptr; 1499451b44SJordan Rupprecht StructMember member; 1599451b44SJordan Rupprecht StructBehindRef &ref = struct_instance; 1699451b44SJordan Rupprecht }; 1799451b44SJordan Rupprecht 1899451b44SJordan Rupprecht struct OtherStruct { 1999451b44SJordan Rupprecht int member_int; 2099451b44SJordan Rupprecht }; 2199451b44SJordan Rupprecht 2299451b44SJordan Rupprecht //----------------------------------------------------------------------------// 2399451b44SJordan Rupprecht // Class loading declarations. 2499451b44SJordan Rupprecht 2599451b44SJordan Rupprecht struct ClassMember { int i; }; 26*34c697c8SRaphael Isemann struct StaticClassMember { int i; }; 2799451b44SJordan Rupprecht struct UnusedClassMember { int i; }; 2899451b44SJordan Rupprecht struct UnusedClassMemberPtr { int i; }; 2999451b44SJordan Rupprecht 3099451b44SJordan Rupprecht namespace NS { 3199451b44SJordan Rupprecht class ClassInNamespace { 3299451b44SJordan Rupprecht int i; 3399451b44SJordan Rupprecht }; 3499451b44SJordan Rupprecht class ClassWeEnter { 3599451b44SJordan Rupprecht public: 3699451b44SJordan Rupprecht int dummy; // Prevent bug where LLDB always completes first member. 3799451b44SJordan Rupprecht ClassMember member; 38*34c697c8SRaphael Isemann static StaticClassMember static_member; 3999451b44SJordan Rupprecht UnusedClassMember unused_member; 4099451b44SJordan Rupprecht UnusedClassMemberPtr *unused_member_ptr; enteredFunction()4199451b44SJordan Rupprecht int enteredFunction() { 4299451b44SJordan Rupprecht return member.i; // Location: class function 4399451b44SJordan Rupprecht } 4499451b44SJordan Rupprecht }; 45*34c697c8SRaphael Isemann StaticClassMember ClassWeEnter::static_member; 4699451b44SJordan Rupprecht }; 4799451b44SJordan Rupprecht 4899451b44SJordan Rupprecht //----------------------------------------------------------------------------// 4999451b44SJordan Rupprecht // Function we can stop in. 5099451b44SJordan Rupprecht functionWithOtherStruct()5199451b44SJordan Rupprechtint functionWithOtherStruct() { 5299451b44SJordan Rupprecht OtherStruct other_struct_var; 5399451b44SJordan Rupprecht other_struct_var.member_int++; // Location: other struct function 5499451b44SJordan Rupprecht return other_struct_var.member_int; 5599451b44SJordan Rupprecht } 5699451b44SJordan Rupprecht functionWithMultipleLocals()5799451b44SJordan Rupprechtint functionWithMultipleLocals() { 5899451b44SJordan Rupprecht SomeStruct struct_var; 5999451b44SJordan Rupprecht OtherStruct other_struct_var; 6099451b44SJordan Rupprecht NS::ClassInNamespace namespace_class; 6199451b44SJordan Rupprecht other_struct_var.member_int++; // Location: multiple locals function 6299451b44SJordan Rupprecht return other_struct_var.member_int; 6399451b44SJordan Rupprecht } 6499451b44SJordan Rupprecht main(int argc,char ** argv)6599451b44SJordan Rupprechtint main(int argc, char **argv) { 6699451b44SJordan Rupprecht NS::ClassWeEnter c; 6799451b44SJordan Rupprecht c.enteredFunction(); 6899451b44SJordan Rupprecht 6999451b44SJordan Rupprecht functionWithOtherStruct(); 7099451b44SJordan Rupprecht functionWithMultipleLocals(); 7199451b44SJordan Rupprecht return 0; 7299451b44SJordan Rupprecht } 73