bespillslots.h 1.58 KB
Newer Older
Matthias Braun's avatar
Matthias Braun committed
1
2
3
4
5
6
7
8
9
/*
 * Author:      Matthias Braun
 * Date:		27.7.2006
 * Copyright:   (c) Universitaet Karlsruhe
 * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
 */
#ifndef BESPILLSLOTS_H_
#define BESPILLSLOTS_H_

10
#include "beirg.h"
Matthias Braun's avatar
Matthias Braun committed
11

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
typedef struct _be_fec_env_t be_fec_env_t;

/**
 * Initializes a new frame entity coalescer environment
 */
be_fec_env_t *be_new_frame_entity_coalescer(be_irg_t *birg);

/**
 * Frees a frame entity coalescer environment
 */
void be_free_frame_entity_coalescer(be_fec_env_t *env);

/**
 * Adds a node that needs a frame entity and consumes memory (Reload nodes). The
 * memory edges are followed to find memory-phis and the entities that produce
 * the memory values.
 *
 * @param env   The frame entity coalescer environment
 * @param node  The node that uses the frame entity
 * @param mode  The mode of the needed spillslot
 * @param align The alignment of the needed spillslot
 */
void be_node_needs_frame_entity(be_fec_env_t *env, ir_node *node,
                                const ir_mode *mode, int alignment);

/**
 * Assigned frame entities to all the nodes added by be_node_needs_frame_entity.
 * Adds memory perms where needed.
 */
void be_assign_entities(be_fec_env_t *env);

//-------------------------------------------------------------------
// Old API
//-------------------------------------------------------------------

Matthias Braun's avatar
Matthias Braun committed
47
/**
48
49
50
 * Assigns frame entities to all spill nodes in the irg.
 * Coalesces spillslots and minimizes the number of memcopies induced by
 * memory-phis.
Matthias Braun's avatar
Matthias Braun committed
51
 */
52
void be_coalesce_spillslots(be_irg_t *birg);
Matthias Braun's avatar
Matthias Braun committed
53

54
#endif /* BESPILLSLOTS_H_ */