re PR target/68273 (Wrong code on mips/mipsel due to (invalid?) peeking at alignments in function_arg.)

2016-02-08  Richard Biener  <rguenther@suse.de>
	Jeff Law  <law@redhat.com>

	PR target/68273
	* tree-ssanames.c (make_ssa_name_fn): Always use unqualified
	types for anonymous SSA names.

	* gcc.target/mips/pr68273.c: New testcase.

Co-Authored-By: Jeff Law <law@redhat.com>

From-SVN: r233211
This commit is contained in:
Richard Biener 2016-02-08 10:04:18 +00:00 committed by Richard Biener
parent ffe9a0a76e
commit 63998a6336
4 changed files with 93 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2016-02-08 Richard Biener <rguenther@suse.de>
Jeff Law <law@redhat.com>
PR target/68273
* tree-ssanames.c (make_ssa_name_fn): Always use unqualified
types for anonymous SSA names.
2016-02-08 Richard Biener <rguenther@suse.de>
PR rtl-optimization/69274

View File

@ -1,3 +1,9 @@
2016-02-08 Richard Biener <rguenther@suse.de>
Jeff Law <law@redhat.com>
PR target/68273
* gcc.target/mips/pr68273.c: New testcase.
2016-02-08 Richard Biener <rguenther@suse.de>
PR rtl-optimization/69274

View File

@ -0,0 +1,79 @@
/* { dg-do compile } */
/* { dg-options "-w -fdump-rtl-expand" } */
/* { dg-skip-if "" { *-*-* } { } { "-O2" } } */
extern char errbuf[];
typedef struct Symbol
{
char *name;
}
Symbol;
typedef struct Tnode
{
}
Tnode;
typedef union Value
{
long long i;
}
Value;
typedef struct Entry
{
}
Entry;
typedef struct Table
{
}
Table;
typedef struct Node
{
Tnode *typ;
int sto;
Value val;
}
Node;
struct Scope
{
Table *table;
} *sp;
static Node op (Node);
Entry *p, *q;
union YYSTYPE
{
Symbol *sym;
Node rec;
};
typedef union YYSTYPE YYSTYPE;
typedef short int yytype_int16;
int
yyparse (void)
{
YYSTYPE yyval;
int yyn;
YYSTYPE *yyvsp;
while (1)
{
if (yyn == 34)
{
if ((yyvsp[-1].rec).sto & 0x10)
sprintf (errbuf, "invalid typedef qualifier for '%s'",
(yyvsp[0].sym)->name);
p = enter (sp->table, (yyvsp[0].sym));
}
else
op ((yyvsp[0].rec));
*++yyvsp = yyval;
}
}
static Node
op (Node q)
{
integer (q.typ);
mgtype (q.typ);
}
/* { dg-final { scan-rtl-dump-times "\\\(set \\\(reg:SI 5 \\\$5\\\)" 2 "expand" } } */
/* { dg-final { scan-rtl-dump-times "\\\(set \\\(reg:SI 6 \\\$6\\\)" 1 "expand" } } */

View File

@ -286,7 +286,7 @@ make_ssa_name_fn (struct function *fn, tree var, gimple *stmt)
if (TYPE_P (var))
{
TREE_TYPE (t) = var;
TREE_TYPE (t) = TYPE_MAIN_VARIANT (var);
SET_SSA_NAME_VAR_OR_IDENTIFIER (t, NULL_TREE);
}
else