* function.c (use_register_for_decl): When not optimizing, disregard
register keyword for variables with types containing methods.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144939
138bc75d-0d04-0410-961f-
82ee72b054a4
* function.c (struct temp_slot): Likewise.
* cfgloop.h (struct loop): Likewise.
+ PR debug/39485
+ * function.c (use_register_for_decl): When not optimizing, disregard
+ register keyword for variables with types containing methods.
+
2009-03-18 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/39447
if (DECL_IGNORED_P (decl))
return true;
- return (optimize || DECL_REGISTER (decl));
+ if (optimize)
+ return true;
+
+ if (!DECL_REGISTER (decl))
+ return false;
+
+ switch (TREE_CODE (TREE_TYPE (decl)))
+ {
+ case RECORD_TYPE:
+ case UNION_TYPE:
+ case QUAL_UNION_TYPE:
+ /* When not optimizing, disregard register keyword for variables with
+ types containing methods, otherwise the methods won't be callable
+ from the debugger. */
+ if (TYPE_METHODS (TREE_TYPE (decl)))
+ return false;
+ break;
+ default:
+ break;
+ }
+
+ return true;
}
/* Return true if TYPE should be passed by invisible reference. */