Commit 817c2996 by Richard Guenther Committed by Richard Biener

re PR lto/44196 (lto1: ICE: tree check: expected field_decl, have type_decl in…

re PR lto/44196 (lto1: ICE: tree check: expected field_decl, have type_decl in gimple_types_compatible_p, at gimple.c:3597)

2010-05-19  Richard Guenther  <rguenther@suse.de>

	PR lto/44196
	* tree.c (find_decls_types_r): Walk BLOCKs and its vars.

	* g++.dg/lto/20100519-1_0.C: New testcase.

From-SVN: r159582
parent c04b6b38
2010-05-19 Richard Guenther <rguenther@suse.de> 2010-05-19 Richard Guenther <rguenther@suse.de>
PR lto/44196
* tree.c (find_decls_types_r): Walk BLOCKs and its vars.
2010-05-19 Richard Guenther <rguenther@suse.de>
* doc/invoke.texi (-fwhopr): Document new optional jobs argument. * doc/invoke.texi (-fwhopr): Document new optional jobs argument.
* common.opt (fwhopr=): New. * common.opt (fwhopr=): New.
* opts.c (common_handle_option): Handle OPT_fwhopr. * opts.c (common_handle_option): Handle OPT_fwhopr.
......
2010-05-19 Richard Guenther <rguenther@suse.de>
PR lto/44196
* g++.dg/lto/20100519-1_0.C: New testcase.
2010-05-19 Daniel Franke <franke.daniel@gmail.com> 2010-05-19 Daniel Franke <franke.daniel@gmail.com>
PR fortran/42360 PR fortran/42360
......
// { dg-lto-do link }
template <typename Ordinal>
struct DirectSerializationTraits
{
static void fromCountToDirectBytes(const Ordinal count) {}
};
template<typename Ordinal> class SerializationTraits
: public DirectSerializationTraits<Ordinal> { };
template <typename Ordinal>
class ConstValueTypeSerializationBuffer
{
public:
ConstValueTypeSerializationBuffer(const Ordinal count)
{
typedef SerializationTraits<Ordinal> SerT;
SerT::fromCountToDirectBytes(count);
}
};
int main ()
{
ConstValueTypeSerializationBuffer<int> charSendBuffer(1);
}
...@@ -4713,6 +4713,15 @@ find_decls_types_r (tree *tp, int *ws, void *data) ...@@ -4713,6 +4713,15 @@ find_decls_types_r (tree *tp, int *ws, void *data)
fld_worklist_push (TREE_CHAIN (t), fld); fld_worklist_push (TREE_CHAIN (t), fld);
*ws = 0; *ws = 0;
} }
else if (TREE_CODE (t) == BLOCK)
{
tree tem;
for (tem = BLOCK_VARS (t); tem; tem = TREE_CHAIN (tem))
fld_worklist_push (tem, fld);
for (tem = BLOCK_SUBBLOCKS (t); tem; tem = BLOCK_CHAIN (tem))
fld_worklist_push (tem, fld);
fld_worklist_push (BLOCK_ABSTRACT_ORIGIN (t), fld);
}
fld_worklist_push (TREE_TYPE (t), fld); fld_worklist_push (TREE_TYPE (t), fld);
......
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