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:
parent
9c0c4ec7cd
commit
73aef89eb7
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
19
gcc/testsuite/gcc.c-torture/compile/pr46866.c
Normal file
19
gcc/testsuite/gcc.c-torture/compile/pr46866.c
Normal 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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user