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:
Harsha Jagasia 2008-11-03 16:43:02 +00:00 committed by Sebastian Pop
parent 2b8aee8e6d
commit 669540aa72
3 changed files with 100 additions and 1 deletions

View File

@ -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

View File

@ -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

View 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 );
}