re PR tree-optimization/42357 (another ice in create_tmp_var)
2009-12-13 Richard Guenther <rguenther@suse.de> PR tree-optimization/42357 * tree-sra.c (sra_modify_assign): Do not tear apart struct copies. * g++.dg/torture/pr42357.C: New testcase. From-SVN: r155193
This commit is contained in:
parent
70c5cc5d72
commit
1bea309889
@ -1,3 +1,8 @@
|
||||
2009-12-13 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/42357
|
||||
* tree-sra.c (sra_modify_assign): Do not tear apart struct copies.
|
||||
|
||||
2009-12-12 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree.c (need_assembler_name_p): Abstract decls do not need
|
||||
|
@ -1,3 +1,8 @@
|
||||
2009-12-13 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/42357
|
||||
* g++.dg/torture/pr42357.C: New testcase.
|
||||
|
||||
2009-12-11 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/42257
|
||||
|
30
gcc/testsuite/g++.dg/torture/pr42357.C
Normal file
30
gcc/testsuite/g++.dg/torture/pr42357.C
Normal file
@ -0,0 +1,30 @@
|
||||
// { dg-do compile }
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned int uint32;
|
||||
class PixelARGB {
|
||||
public:
|
||||
~PixelARGB() throw() { }
|
||||
PixelARGB (const uint32 argb_) throw() : argb (argb_) { }
|
||||
inline __attribute__((always_inline)) uint8 getRed() const throw() {
|
||||
return components.r;
|
||||
}
|
||||
union {
|
||||
uint32 argb;
|
||||
struct {
|
||||
uint8 b, g, r, a;
|
||||
} components;
|
||||
};
|
||||
};
|
||||
class Colour {
|
||||
public:
|
||||
Colour() throw() : argb (0) {};
|
||||
uint8 getRed() const throw() {
|
||||
return argb.getRed();
|
||||
}
|
||||
PixelARGB argb;
|
||||
};
|
||||
uint8 writeImage (void) {
|
||||
Colour pixel;
|
||||
pixel = Colour ();
|
||||
return pixel.getRed();
|
||||
}
|
@ -2441,7 +2441,8 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator *gsi,
|
||||
if (!useless_type_conversion_p (TREE_TYPE (lhs), TREE_TYPE (rhs)))
|
||||
{
|
||||
rhs = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (lhs), rhs);
|
||||
if (!is_gimple_reg (lhs))
|
||||
if (is_gimple_reg_type (TREE_TYPE (lhs))
|
||||
&& TREE_CODE (lhs) != SSA_NAME)
|
||||
force_gimple_rhs = true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user