Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
a855b8f6
Commit
a855b8f6
authored
Dec 08, 2004
by
Sebastian Hack
Browse files
Minor corrections.
[r4590]
parent
49ad2542
Changes
5
Show whitespace changes
Inline
Side-by-side
ir/ir/irgraph.c
View file @
a855b8f6
...
...
@@ -711,4 +711,5 @@ static void normalize_proj_walker(ir_node *n, void *env)
void
normalize_proj_nodes
(
ir_graph
*
irg
)
{
irg_walk_graph
(
irg
,
NULL
,
normalize_proj_walker
,
NULL
);
set_irg_outs_inconsistent
(
irg
);
}
ir/ir/irnode.h
View file @
a855b8f6
...
...
@@ -900,7 +900,7 @@ int is_forking_op(const ir_node *node);
* register_additional_node_data() before.
* @param node The ir node to get the data from.
* @param type The type of the data you registered.
* @param off The value returned by register_additional_node_data.
* @param off The value returned by register_additional_node_data
()
.
* @return A pointer of type @p type.
*/
#define get_irn_data(node,type,off) \
...
...
ir/ir/irop.c
View file @
a855b8f6
...
...
@@ -273,11 +273,14 @@ ident *(get_op_ident)(ir_op *op){
const
char
*
get_op_pin_state_name
(
op_pin_state
s
)
{
switch
(
s
)
{
case
op_pin_state_floats
:
return
"op_pin_state_floats"
;
case
op_pin_state_pinned
:
return
"op_pin_state_pinned"
;
case
op_pin_state_exc_pinned
:
return
"op_pin_state_exc_pinned"
;
case
op_pin_state_mem_pinned
:
return
"op_pin_state_mem_pinned"
;
#define XXX(s) case s: return #s
XXX
(
op_pin_state_floats
);
XXX
(
op_pin_state_pinned
);
XXX
(
op_pin_state_exc_pinned
);
XXX
(
op_pin_state_mem_pinned
);
#undef XXX
}
return
"<none>"
;
}
op_pin_state
(
get_op_pinned
)(
const
ir_op
*
op
){
...
...
ir/ir/irprintf.c
View file @
a855b8f6
...
...
@@ -25,9 +25,11 @@
#include
<stdarg.h>
#ifdef HAVE_STRING_H
#
include <string.h>
#include
<string.h>
#endif
#include
<ctype.h>
#include
"ident.h"
#include
"irmode_t.h"
#include
"irnode_t.h"
...
...
@@ -104,6 +106,90 @@ static INLINE void ir_common_printf(const appender_t *app, void *object,
va_end
(
args
);
}
#if 0
static int is_std_fmt(const char *fmt)
{
static const char *fmt_re_str =
"^[0 -+#']?[1-9]*(\\.[1-9]*)?[hlLqjzt]?[diouxXeEfFgGaAc]";
static regex_t fmt_re;
static int preapred_re = 0;
regmatch_t match[1];
int res;
if(!preapred_re) {
int res = regcomp(&fmt_re, fmt_re_str, REG_EXTENDED);
assert(res == 0 && "Could not prepare regex");
preapred_re = 1;
}
res = regexec(&fmt_re, fmt, 1, &match[0], 0);
#if 0
if(res != 0) {
char buf[256];
regerror(res, &fmt_re, buf, sizeof(buf));
printf("%s ", buf);
}
printf("res: %d, start: %d, end: %d\n",
res, match[0].rm_so, match[0].rm_eo);
#endif
return res == 0 ? match[0].rm_eo : -1;
}
#endif
struct
settings
{
char
pad
;
int
width
;
int
left_just
;
int
put_plus
;
int
alternate
;
};
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAX(x,y) ((x) > (y) ? (x) : (y))
static
void
dump_with_settings
(
const
appender_t
*
app
,
void
*
object
,
size_t
limit
,
const
struct
settings
*
settings
,
const
char
*
str
)
{
if
(
settings
->
width
>=
0
)
{
int
i
;
size_t
n
=
strlen
(
str
);
int
lim
=
MIN
(
settings
->
width
,
limit
);
int
to_print
=
MIN
(
lim
,
n
);
int
to_pad
=
to_print
-
lim
;
if
(
!
settings
->
left_just
)
for
(
i
=
0
;
i
<
to_pad
;
++
i
)
app
->
append_char
(
object
,
lim
,
settings
->
pad
);
app
->
append_str
(
object
,
to_print
,
str
);
if
(
!
settings
->
left_just
)
for
(
i
=
0
;
i
<
to_pad
;
++
i
)
app
->
append_char
(
object
,
lim
,
settings
->
pad
);
}
else
app
->
append_str
(
object
,
limit
,
str
);
}
/* Length specifiers. */
enum
{
len_char
,
len_short
,
len_int
,
len_long
,
len_long_long
};
/**
* A small printf helper routine for ir nodes.
* @param app An appender (this determines where the stuff is dumped
...
...
@@ -116,7 +202,8 @@ static INLINE void ir_common_printf(const appender_t *app, void *object,
static
void
ir_common_vprintf
(
const
appender_t
*
app
,
void
*
object
,
size_t
limit
,
const
char
*
fmt
,
va_list
args
)
{
char
buf
[
256
];
const
char
*
str
;
char
buf
[
4096
];
int
i
,
n
;
#define DUMP_STR(s) app->append_str(object, limit, s)
...
...
@@ -126,33 +213,128 @@ static void ir_common_vprintf(const appender_t *app, void *object,
char
ch
=
fmt
[
i
];
if
(
ch
==
'%'
)
{
char
next_ch
=
fmt
[
++
i
];
int
len
;
const
char
*
len_str
=
""
;
struct
settings
settings
;
settings
.
alternate
=
0
;
settings
.
pad
=
' '
;
settings
.
width
=
-
1
;
settings
.
left_just
=
0
;
settings
.
put_plus
=
0
;
ch
=
fmt
[
++
i
];
/* Clear the temporary buffer */
buf
[
0
]
=
'\0'
;
switch
(
next_ch
)
{
/* Set the string to print to the buffer by default. */
str
=
buf
;
while
(
strchr
(
"#0-+"
,
ch
))
{
switch
(
ch
)
{
case
'#'
:
settings
.
alternate
=
1
;
break
;
case
'0'
:
settings
.
pad
=
'0'
;
break
;
case
'-'
:
settings
.
left_just
=
1
;
break
;
case
'+'
:
settings
.
put_plus
=
1
;
break
;
}
ch
=
fmt
[
++
i
];
}
/* Read the field width */
{
char
*
endptr
;
int
increase
;
settings
.
width
=
(
int
)
strtol
(
&
fmt
[
i
],
&
endptr
,
10
);
increase
=
(
char
*
)
endptr
-
&
fmt
[
i
];
ch
=
fmt
[
i
+=
increase
];
if
(
increase
==
0
)
settings
.
width
=
-
1
;
}
/* Ignore the precision */
if
(
ch
==
'.'
)
while
(
isdigit
(
ch
=
fmt
[
++
i
]));
/* read the length modifier. */
switch
(
ch
)
{
case
'h'
:
len_str
=
"h"
;
len
=
len_short
;
if
((
ch
=
fmt
[
++
i
])
==
'h'
)
{
len_str
=
"hh"
;
len
=
len_char
;
}
break
;
case
'l'
:
len_str
=
"l"
;
len
=
len_long
;
if
((
ch
=
fmt
[
++
i
])
==
'l'
)
{
len_str
=
"ll"
;
len
=
len_long_long
;
}
break
;
default:
len
=
len_int
;
}
/* Do the conversion specifier. */
switch
(
ch
)
{
/* The percent itself */
case
'%'
:
DUMP_CH
(
'%'
);
buf
[
0
]
=
'%'
;
buf
[
1
]
=
'\0'
;
break
;
case
'c'
:
buf
[
0
]
=
va_arg
(
args
,
int
);
buf
[
1
]
=
'\0'
;
break
;
case
's'
:
DUMP_STR
(
va_arg
(
args
,
const
char
*
));
str
=
va_arg
(
args
,
const
char
*
);
break
;
case
'p'
:
snprintf
(
buf
,
sizeof
(
buf
),
"%p"
,
va_arg
(
args
,
void
*
));
break
;
case
'd'
:
case
'x'
:
case
'X'
:
case
'o'
:
{
char
fmt_str
[
16
];
snprintf
(
fmt_str
,
sizeof
(
fmt_str
),
"%%%s%c"
,
len_str
,
ch
);
vsnprintf
(
buf
,
sizeof
(
buf
),
fmt_str
,
args
);
}
break
;
case
'I'
:
DUMP_STR
(
get_id_str
(
va_arg
(
args
,
ident
*
))
)
;
str
=
get_id_str
(
va_arg
(
args
,
ident
*
));
break
;
case
'e'
:
DUMP_STR
(
get_entity_name
(
va_arg
(
args
,
entity
*
))
)
;
str
=
get_entity_name
(
va_arg
(
args
,
entity
*
));
break
;
case
'E'
:
DUMP_STR
(
get_entity_ld_name
(
va_arg
(
args
,
entity
*
)));
break
;
case
'p'
:
snprintf
(
buf
,
sizeof
(
buf
),
"%p"
,
va_arg
(
args
,
void
*
));
str
=
get_entity_ld_name
(
va_arg
(
args
,
entity
*
));
break
;
case
't'
:
...
...
@@ -167,8 +349,8 @@ static void ir_common_vprintf(const appender_t *app, void *object,
}
break
;
case
'
o
'
:
DUMP_STR
(
get_irn_opname
(
va_arg
(
args
,
ir_node
*
))
)
;
case
'
O
'
:
str
=
get_irn_opname
(
va_arg
(
args
,
ir_node
*
));
break
;
case
'N'
:
...
...
@@ -176,7 +358,7 @@ static void ir_common_vprintf(const appender_t *app, void *object,
break
;
case
'm'
:
DUMP_STR
(
get_mode_name
(
va_arg
(
args
,
ir_mode
*
))
)
;
str
=
get_mode_name
(
va_arg
(
args
,
ir_mode
*
));
break
;
case
'b'
:
...
...
@@ -184,7 +366,7 @@ static void ir_common_vprintf(const appender_t *app, void *object,
get_irn_node_nr
(
get_nodes_block
(
va_arg
(
args
,
ir_node
*
))));
break
;
case
'
+
'
:
case
'
*
'
:
{
iterator_t
*
it
=
va_arg
(
args
,
iterator_t
*
);
void
*
collection
=
va_arg
(
args
,
void
*
);
...
...
@@ -218,9 +400,7 @@ static void ir_common_vprintf(const appender_t *app, void *object,
break
;
}
/* Dump the temporary buffer, if something is in it. */
if
(
buf
[
0
]
!=
'\0'
)
DUMP_STR
(
buf
);
dump_with_settings
(
app
,
object
,
limit
,
&
settings
,
str
);
}
else
...
...
ir/ir/irreflect.h
View file @
a855b8f6
...
...
@@ -188,7 +188,7 @@ rflct_sig_t *rflct_signature_allocate(int defs, int uses);
* @param name The name of the argument.
* @param mc The mode class of the argument.
* @param is_variadic true, if the argument is variadic.
* @param mode_equals This variable has following meaning
.
If the
* @param mode_equals This variable has following meaning
:
If the
* argument is variadic, a 1 indicates that all operands binding to this
* argument must have the same mode. A 0 indicates, that their mode must
* be of the specified mode class but can differ. If the argument is non
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment