Commit d130d647 by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/39485 (-O0 -g still puts whole object to a register)

	PR debug/39485
	* function.c (use_register_for_decl): When not optimizing, disregard
	register keyword for variables with types containing methods.

From-SVN: r144939
parent 8f5929e1
......@@ -12,6 +12,10 @@
* 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
......
......@@ -1942,7 +1942,28 @@ use_register_for_decl (const_tree decl)
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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment