re PR middle-end/46844 (regrename.c:312:22: error: unused parameter 'reg')

2010-12-09  Richard Guenther  <rguenther@suse.de>

	PR middle-end/46844
	* gimple-fold.c (canonicalize_constructor_val): Canonicalize
	addresses.

	* gcc.c-torture/compile/pr46866.c: New testcase.

From-SVN: r167649
This commit is contained in:
Richard Guenther 2010-12-09 17:00:19 +00:00 committed by Richard Biener
parent 9c0c4ec7cd
commit 73aef89eb7
4 changed files with 34 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-12-09 Richard Guenther <rguenther@suse.de>
PR middle-end/46844
* gimple-fold.c (canonicalize_constructor_val): Canonicalize
addresses.
2010-12-09 Joseph Myers <joseph@codesourcery.com>
* config/i386/netware.h (TARGET_POSIX_IO): Define.

View File

@ -132,6 +132,10 @@ canonicalize_constructor_val (tree cval)
return NULL_TREE;
if (base && TREE_CODE (base) == VAR_DECL)
add_referenced_var (base);
/* We never have the chance to fixup types in global initializers
during gimplification. Do so here. */
if (TREE_TYPE (TREE_TYPE (cval)) != TREE_TYPE (TREE_OPERAND (cval, 0)))
cval = build_fold_addr_expr (TREE_OPERAND (cval, 0));
}
return cval;
}

View File

@ -1,3 +1,8 @@
2010-12-09 Richard Guenther <rguenther@suse.de>
PR middle-end/46844
* gcc.c-torture/compile/pr46866.c: New testcase.
2010-12-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR testsuite/45068

View File

@ -0,0 +1,19 @@
extern void *malloc(__SIZE_TYPE__);
typedef struct T T;
struct T {
void (*destroy)(void *);
};
void destroy(union { void *this; } __attribute__((transparent_union)));
static const typeof(destroy) *_destroy = (const typeof(destroy)*)destroy;
void destroy(void *this);
static T *create_empty(void)
{
T *this = malloc(sizeof(*this));
*this = (typeof(*this)){ _destroy };
return this;
}
void openssl_crl_load(void)
{
T *this = create_empty();
destroy(this);
}