projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
amend to tls_chagnes
[libfirm]
/
ir
/
stat
/
pattern.c
diff --git
a/ir/stat/pattern.c
b/ir/stat/pattern.c
index
6bb7010
..
5f532ba
100644
(file)
--- a/
ir/stat/pattern.c
+++ b/
ir/stat/pattern.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 1995-20
08
University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-20
11
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* This file is part of libFirm.
*
@@
-40,6
+40,7
@@
#include "pattern_dmp.h"
#include "hashptr.h"
#include "error.h"
#include "pattern_dmp.h"
#include "hashptr.h"
#include "error.h"
+#include "lc_printf.h"
#ifdef FIRM_STATISTICS
#ifdef FIRM_STATISTICS
@@
-91,7
+92,7
@@
enum vlc_code_t {
*/
typedef struct pattern_entry_t {
counter_t count; /**< Amount of pattern occurance. */
*/
typedef struct pattern_entry_t {
counter_t count; /**< Amount of pattern occurance. */
-
unsigned
len; /**< The length of the VLC encoded buffer. */
+
size_t
len; /**< The length of the VLC encoded buffer. */
BYTE buf[1]; /**< The buffer containing the VLC encoded pattern. */
} pattern_entry_t;
BYTE buf[1]; /**< The buffer containing the VLC encoded pattern. */
} pattern_entry_t;
@@
-145,14
+146,13
@@
static int pattern_count_cmp(const void *elt, const void *key)
*/
static int pattern_cmp(const void *elt, const void *key)
{
*/
static int pattern_cmp(const void *elt, const void *key)
{
- const pattern_entry_t *e1 = elt;
- const pattern_entry_t *e2 = key;
- int diff = e1->len - e2->len;
+ const pattern_entry_t *e1 = (const pattern_entry_t*)elt;
+ const pattern_entry_t *e2 = (const pattern_entry_t*)key;
- if (
diff
)
- return
diff
;
+ if (
e1->len == e2->len
)
+ return
memcmp(e1->buf, e2->buf, e1->len)
;
- return
memcmp(e1->buf, e2->buf, e1->len)
;
+ return
e1->len < e2->len ? -1 : +1
;
} /* pattern_cmp */
/**
} /* pattern_cmp */
/**
@@
-162,7
+162,7
@@
static int pattern_cmp(const void *elt, const void *key)
* @param data a buffer address
* @param len the length of the data buffer
*/
* @param data a buffer address
* @param len the length of the data buffer
*/
-static void init_buf(CODE_BUFFER *buf, BYTE *data,
unsigned
len)
+static void init_buf(CODE_BUFFER *buf, BYTE *data,
size_t
len)
{
buf->start =
buf->next = data;
{
buf->start =
buf->next = data;
@@
-196,7
+196,7
@@
static inline void put_byte(CODE_BUFFER *buf, BYTE byte)
*
* @return the length of the buffer content
*/
*
* @return the length of the buffer content
*/
-static
unsigned
buf_lenght(const CODE_BUFFER *buf)
+static
size_t
buf_lenght(const CODE_BUFFER *buf)
{
return buf->next - buf->start;
} /* buf_lenght */
{
return buf->next - buf->start;
} /* buf_lenght */
@@
-388,23
+388,27
@@
typedef struct addr_entry_t {
*/
static int addr_cmp(const void *p1, const void *p2, size_t size)
{
*/
static int addr_cmp(const void *p1, const void *p2, size_t size)
{
- const addr_entry_t *e1 = p1;
- const addr_entry_t *e2 = p2;
+ const addr_entry_t *e1 =
(const addr_entry_t*)
p1;
+ const addr_entry_t *e2 =
(const addr_entry_t*)
p2;
(void) size;
return e1->addr != e2->addr;
} /* addr_cmp */
(void) size;
return e1->addr != e2->addr;
} /* addr_cmp */
-static unsigned find_mode_index(const ir_mode *mode)
+/**
+ * Return the index of a (existing) mode.
+ */
+static size_t find_mode_index(const ir_mode *mode)
{
{
- int n = get_irp_n_modes();
- int i;
+ size_t i, n = get_irp_n_modes();
for (i = 0; i < n; ++i) {
if (get_irp_mode(i) == mode)
return i;
}
for (i = 0; i < n; ++i) {
if (get_irp_mode(i) == mode)
return i;
}
- return -1;
+ /* should really not happen */
+ assert(!"Cound not find index of mode in find_mode_index()");
+ return (size_t)-1;
}
/**
}
/**
@@
-419,7
+423,7
@@
static int _encode_node(ir_node *node, int max_depth, codec_env_t *env)
int i, preds;
int res, depth;
int i, preds;
int res, depth;
-
ir_opcode
code = get_irn_opcode(node);
+
unsigned
code = get_irn_opcode(node);
/* insert the node into our ID map */
entry.addr = node;
/* insert the node into our ID map */
entry.addr = node;
@@
-454,7
+458,7
@@
static int _encode_node(ir_node *node, int max_depth, codec_env_t *env)
/* do we need integer constants */
if (env->options & OPT_WITH_ICONST) {
if (code == iro_Const) {
/* do we need integer constants */
if (env->options & OPT_WITH_ICONST) {
if (code == iro_Const) {
- tarval *tv = get_Const_tarval(node);
+
ir_
tarval *tv = get_Const_tarval(node);
if (tarval_is_long(tv)) {
long v = get_tarval_long(tv);
if (tarval_is_long(tv)) {
long v = get_tarval_long(tv);
@@
-634,7
+638,7
@@
static void _decode_node(unsigned parent, int position, codec_env_t *env)
/**
* Decode an IR-node.
*/
/**
* Decode an IR-node.
*/
-static void decode_node(BYTE *b,
unsigned
len, pattern_dumper_t *dump)
+static void decode_node(BYTE *b,
size_t
len, pattern_dumper_t *dump)
{
codec_env_t env;
CODE_BUFFER buf;
{
codec_env_t env;
CODE_BUFFER buf;
@@
-677,7
+681,7
@@
typedef struct pattern_env {
static pattern_entry_t *pattern_get_entry(CODE_BUFFER *buf, pset *set)
{
pattern_entry_t *key, *elem;
static pattern_entry_t *pattern_get_entry(CODE_BUFFER *buf, pset *set)
{
pattern_entry_t *key, *elem;
-
unsigned
len = buf_lenght(buf);
+
size_t
len = buf_lenght(buf);
unsigned hash;
key = OALLOCF(&status->obst, pattern_entry_t, buf, len);
unsigned hash;
key = OALLOCF(&status->obst, pattern_entry_t, buf, len);
@@
-686,14
+690,14
@@
static pattern_entry_t *pattern_get_entry(CODE_BUFFER *buf, pset *set)
hash = buf_hash(buf);
hash = buf_hash(buf);
- elem = pset_find(set, key, hash);
+ elem =
(pattern_entry_t*)
pset_find(set, key, hash);
if (elem != NULL) {
obstack_free(&status->obst, key);
return elem;
} /* if */
cnt_clr(&key->count);
if (elem != NULL) {
obstack_free(&status->obst, key);
return elem;
} /* if */
cnt_clr(&key->count);
- return pset_insert(set, key, hash);
+ return
(pattern_entry_t*)
pset_insert(set, key, hash);
} /* pattern_get_entry */
/**
} /* pattern_get_entry */
/**
@@
-722,7
+726,7
@@
static void count_pattern(CODE_BUFFER *buf, int depth)
*/
static void calc_nodes_pattern(ir_node *node, void *ctx)
{
*/
static void calc_nodes_pattern(ir_node *node, void *ctx)
{
- pattern_env_t *env = ctx;
+ pattern_env_t *env =
(pattern_env_t*)
ctx;
BYTE buffer[PATTERN_STORE_SIZE];
CODE_BUFFER buf;
int depth;
BYTE buffer[PATTERN_STORE_SIZE];
CODE_BUFFER buf;
int depth;
@@
-731,7
+735,7
@@
static void calc_nodes_pattern(ir_node *node, void *ctx)
depth = encode_node(node, &buf, env->max_depth);
if (buf_overrun(&buf)) {
depth = encode_node(node, &buf, env->max_depth);
if (buf_overrun(&buf)) {
-
fprintf(stderr, "Pattern store: buffer overrun at size %u. Pattern ignored.\n", (unsigned)
sizeof(buffer));
+
lc_fprintf(stderr, "Pattern store: buffer overrun at size %zu. Pattern ignored.\n",
sizeof(buffer));
} else
count_pattern(&buf, depth);
} /* calc_nodes_pattern */
} else
count_pattern(&buf, depth);
} /* calc_nodes_pattern */
@@
-745,7
+749,7
@@
static void store_pattern(const char *fname)
{
FILE *f;
pattern_entry_t *entry;
{
FILE *f;
pattern_entry_t *entry;
-
in
t i, count = pset_count(status->pattern_hash);
+
size_
t i, count = pset_count(status->pattern_hash);
if (count <= 0)
return;
if (count <= 0)
return;
@@
-759,9
+763,9
@@
static void store_pattern(const char *fname)
fwrite("FPS1", 4, 1, f);
fwrite(&count, sizeof(count), 1, f);
fwrite("FPS1", 4, 1, f);
fwrite(&count, sizeof(count), 1, f);
- for (i = 0, entry = pset_first(status->pattern_hash);
+ for (i = 0, entry =
(pattern_entry_t*)
pset_first(status->pattern_hash);
entry && i < count;
entry && i < count;
- entry = pset_next(status->pattern_hash), ++i) {
+ entry =
(pattern_entry_t*)
pset_next(status->pattern_hash), ++i) {
fwrite(entry, offsetof(pattern_entry_t, buf) + entry->len, 1, f);
} /* for */
fclose(f);
fwrite(entry, offsetof(pattern_entry_t, buf) + entry->len, 1, f);
} /* for */
fclose(f);
@@
-776,7
+780,7
@@
static HASH_MAP(pattern_entry_t) *read_pattern(const char *fname)
{
FILE *f;
pattern_entry_t *entry, tmp;
{
FILE *f;
pattern_entry_t *entry, tmp;
-
in
t i, count;
+
size_
t i, count;
unsigned j;
char magic[4];
HASH_MAP(pattern_entry_t) *pattern_hash = new_pset(pattern_cmp, 8);
unsigned j;
char magic[4];
HASH_MAP(pattern_entry_t) *pattern_hash = new_pset(pattern_cmp, 8);
@@
-809,7
+813,7
@@
static HASH_MAP(pattern_entry_t) *read_pattern(const char *fname)
} /* for */
fclose(f);
} /* for */
fclose(f);
-
printf("Read %d
pattern from %s\n", count, fname);
+
lc_printf("Read %zu
pattern from %s\n", count, fname);
assert(pset_count(pattern_hash) == count);
return pattern_hash;
assert(pset_count(pattern_hash) == count);
return pattern_hash;
@@
-825,20
+829,20
@@
static void pattern_output(const char *fname)
pattern_entry_t *entry;
pattern_entry_t **pattern_arr;
pattern_dumper_t *dump;
pattern_entry_t *entry;
pattern_entry_t **pattern_arr;
pattern_dumper_t *dump;
-
in
t i, count = pset_count(status->pattern_hash);
+
size_
t i, count = pset_count(status->pattern_hash);
-
printf("\n%d
pattern detected\n", count);
+
lc_printf("\n%zu
pattern detected\n", count);
- if (count
<
= 0)
+ if (count
=
= 0)
return;
/* creates a dumper */
dump = new_vcg_dumper(fname, 100);
pattern_arr = XMALLOCN(pattern_entry_t*, count);
return;
/* creates a dumper */
dump = new_vcg_dumper(fname, 100);
pattern_arr = XMALLOCN(pattern_entry_t*, count);
- for (i = 0, entry = pset_first(status->pattern_hash);
+ for (i = 0, entry =
(pattern_entry_t*)
pset_first(status->pattern_hash);
entry && i < count;
entry && i < count;
- entry = pset_next(status->pattern_hash), ++i) {
+ entry =
(pattern_entry_t*)
pset_next(status->pattern_hash), ++i) {
pattern_arr[i] = entry;
} /* for */
assert(count == i);
pattern_arr[i] = entry;
} /* for */
assert(count == i);