re PR tree-optimization/37684 ([graphite] basic block containing VDEF of a scalar does not dominate basic block containing VUSE of the same scalar)
2008-11-03 Harsha Jagasia <harsha.jagasia@amd.com> PR tree-optimization/37684 * gcc.dg/graphite/pr37684.c: New. * graphite.c (exclude_component_ref): New. (is_simple_operand): Call exclude_component_ref. From-SVN: r141551
This commit is contained in:
parent
2b8aee8e6d
commit
669540aa72
@ -1,3 +1,10 @@
|
||||
2008-11-03 Harsha Jagasia <harsha.jagasia@amd.com>
|
||||
|
||||
PR tree-optimization/37684
|
||||
* gcc.dg/graphite/pr37684.c: New.
|
||||
* graphite.c (exclude_component_ref): New.
|
||||
(is_simple_operand): Call exclude_component_ref.
|
||||
|
||||
2008-11-03 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/36908
|
||||
|
@ -864,6 +864,33 @@ loop_affine_expr (basic_block scop_entry, struct loop *loop, tree expr)
|
||||
|| evolution_function_is_affine_multivariate_p (scev, n));
|
||||
}
|
||||
|
||||
/* Return false if the tree_code of the operand OP or any of its operands
|
||||
is component_ref. */
|
||||
|
||||
static bool
|
||||
exclude_component_ref (tree op)
|
||||
{
|
||||
int i;
|
||||
int len;
|
||||
|
||||
if (op)
|
||||
{
|
||||
if (TREE_CODE (op) == COMPONENT_REF)
|
||||
return false;
|
||||
else
|
||||
{
|
||||
len = TREE_OPERAND_LENGTH (op);
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
if (!exclude_component_ref (TREE_OPERAND (op, i)))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Return true if the operand OP is simple. */
|
||||
|
||||
static bool
|
||||
@ -879,7 +906,7 @@ is_simple_operand (loop_p loop, gimple stmt, tree op)
|
||||
&& !stmt_simple_memref_p (loop, stmt, op)))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
return exclude_component_ref (op);
|
||||
}
|
||||
|
||||
/* Return true only when STMT is simple enough for being handled by
|
||||
|
65
gcc/testsuite/gcc.dg/graphite/pr37684.c
Normal file
65
gcc/testsuite/gcc.dg/graphite/pr37684.c
Normal file
@ -0,0 +1,65 @@
|
||||
/* { dg-options "-O2 -floop-block -fdump-tree-graphite-all" } */
|
||||
|
||||
typedef struct _IO_FILE FILE;
|
||||
struct _IO_marker {
|
||||
};
|
||||
enum __codecvt_result
|
||||
{
|
||||
__codecvt_noconv
|
||||
};
|
||||
struct _IO_FILE {
|
||||
};
|
||||
extern struct _IO_FILE *stderr;
|
||||
|
||||
typedef
|
||||
struct {
|
||||
unsigned int avail_in;
|
||||
unsigned int avail_out;
|
||||
void *state;
|
||||
void *(*bzalloc)(void *,int,int);
|
||||
void *opaque;
|
||||
}
|
||||
bz_stream;
|
||||
extern int BZ2_bzCompressInit (
|
||||
bz_stream* strm,
|
||||
int blockSize100k,
|
||||
int verbosity,
|
||||
int workFactor
|
||||
);
|
||||
typedef unsigned char Bool;
|
||||
typedef int Int32;
|
||||
typedef unsigned int UInt32;
|
||||
|
||||
typedef
|
||||
struct {
|
||||
Int32 mode;
|
||||
Int32 state;
|
||||
UInt32* arr1;
|
||||
UInt32* arr2;
|
||||
UInt32* ftab;
|
||||
Int32 nblock;
|
||||
Int32 nblockMAX;
|
||||
Bool inUse[256];
|
||||
Int32 blockNo;
|
||||
}
|
||||
EState;
|
||||
|
||||
void prepare_new_block ( EState* s )
|
||||
{
|
||||
Int32 i;
|
||||
for (i = 0; i < 256; i++) s->inUse[i] = ((Bool)0);
|
||||
s->blockNo++;
|
||||
}
|
||||
|
||||
int BZ2_bzCompressInit
|
||||
( bz_stream* strm,
|
||||
int blockSize100k,
|
||||
int verbosity,
|
||||
int workFactor )
|
||||
{
|
||||
EState* s;
|
||||
s = (strm->bzalloc)(strm->opaque,(sizeof(EState)),1);
|
||||
if (s->arr1 == ((void *)0) || s->arr2 == ((void *)0) || s->ftab == ((void *)0)) {
|
||||
}
|
||||
prepare_new_block ( s );
|
||||
}
|
Loading…
Reference in New Issue
Block a user