fix weak external functions
[libfirm] / ir / stat / pattern.c
index f177b26..47ff364 100644 (file)
@@ -1,10 +1,29 @@
 /*
- * pattern history
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
  */
 
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
+/**
+ * @file
+ * @brief   Statistics for Firm. Pattern history.
+ * @author  Michael Beck
+ * @version $Id$
+ */
+#include "config.h"
 
 #include <assert.h>
 #include <stdlib.h>
@@ -20,6 +39,8 @@
 #include "pattern_dmp.h"
 #include "hashptr.h"
 
+#ifdef FIRM_STATISTICS
+
 /*
  * just be make some things clear :-), the
  * poor man "generics"
@@ -153,7 +174,7 @@ static void init_buf(CODE_BUFFER *buf, BYTE *data, unsigned len) {
  *
  * The hash value for the buffer content is updated.
  */
-static INLINE void put_byte(CODE_BUFFER *buf, BYTE byte) {
+static inline void put_byte(CODE_BUFFER *buf, BYTE byte) {
        if (buf->next < buf->end) {
                *buf->next++ = byte;
                buf->hash = (buf->hash * 9) ^ byte;
@@ -211,7 +232,7 @@ static unsigned buf_overrun(const CODE_BUFFER *buf) {
  *
  * @return  the next byte from the code buffer
  */
-static INLINE BYTE look_byte(CODE_BUFFER *buf) {
+static inline BYTE look_byte(CODE_BUFFER *buf) {
        if (buf->next < buf->end)
                return *buf->next;
        return VLC_TAG_END;
@@ -224,7 +245,7 @@ static INLINE BYTE look_byte(CODE_BUFFER *buf) {
  *
  * @return  the next byte from the code buffer
  */
-static INLINE BYTE get_byte(CODE_BUFFER *buf) {
+static inline BYTE get_byte(CODE_BUFFER *buf) {
        if (buf->next < buf->end)
                return *buf->next++;
        return VLC_TAG_END;
@@ -354,6 +375,7 @@ typedef struct _addr_entry_t {
 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;
+       (void) size;
 
        return e1->addr != e2->addr;
 }  /* addr_cmp */
@@ -396,8 +418,7 @@ static int _encode_node(ir_node *node, int max_depth, codec_env_t *env) {
                ir_mode *mode = get_irn_mode(node);
 
                if (mode)
-                       /* FIXME: not 64bit save */
-                       put_code(env->buf, (unsigned)mode);
+                       put_code(env->buf, stat_find_mode_index(mode));
                else
                        put_tag(env->buf, VLC_TAG_EMPTY);
        }  /* if */
@@ -627,9 +648,7 @@ static pattern_entry_t *pattern_get_entry(CODE_BUFFER *buf, pset *set) {
        unsigned len = buf_lenght(buf);
        unsigned hash;
 
-       key = obstack_alloc(&status->obst, offsetof(pattern_entry_t, buf) + len);
-       assert(key);
-
+       key = OALLOCF(&status->obst, pattern_entry_t, buf, len);
        key->len = len;
        memcpy(key->buf, buf_content(buf), len);
 
@@ -678,7 +697,7 @@ static void calc_nodes_pattern(ir_node *node, void *ctx) {
        depth = encode_node(node, &buf, env->max_depth);
 
        if (buf_overrun(&buf)) {
-               fprintf(stderr, "Pattern store: buffer overrun at size %d. Pattern ignored.\n", sizeof(buffer));
+               fprintf(stderr, "Pattern store: buffer overrun at size %u. Pattern ignored.\n", (unsigned) sizeof(buffer));
        } else
                count_pattern(&buf, depth);
 }  /* calc_nodes_pattern */
@@ -779,7 +798,7 @@ static void pattern_output(const char *fname) {
        /* creates a dumper */
        dump = new_vcg_dumper(fname, 100);
 
-       pattern_arr = xmalloc(sizeof(*pattern_arr) * count);
+       pattern_arr = XMALLOCN(pattern_entry_t*, count);
        for (i = 0, entry = pset_first(status->pattern_hash);
             entry && i < count;
             entry = pset_next(status->pattern_hash), ++i) {
@@ -855,6 +874,7 @@ void stat_init_pattern_history(int enable) {
  * Finish the pattern history.
  */
 void stat_finish_pattern_history(const char *fname) {
+       (void) fname;
        if (! status->enable)
                return;
 
@@ -866,3 +886,5 @@ void stat_finish_pattern_history(const char *fname) {
 
        status->enable = 0;
 }  /* stat_finish_pattern_history */
+
+#endif /* FIRM_STATISTICS */