projects
/
cparser
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f65100f
)
use module_shift from base_mode when constructing bitfield modes
author
Matthias Braun
<matze@braunis.de>
Mon, 17 Dec 2012 13:02:21 +0000
(14:02 +0100)
committer
Matthias Braun
<matze@braunis.de>
Mon, 17 Dec 2012 13:05:16 +0000
(14:05 +0100)
ast2firm.c
patch
|
blob
|
history
diff --git
a/ast2firm.c
b/ast2firm.c
index
2e85c8a
..
8a52156
100644
(file)
--- a/
ast2firm.c
+++ b/
ast2firm.c
@@
-485,10
+485,12
@@
static ir_type *get_signed_int_type_for_bit_size(ir_type *base_tp,
mode = s_modes[size];
if (mode == NULL) {
mode = s_modes[size];
if (mode == NULL) {
- char name[32];
+ ir_mode *base_mode = get_type_mode(base_tp);
+ unsigned modulo_shift = get_mode_modulo_shift(base_mode);
+ char name[32];
snprintf(name, sizeof(name), "bf_I%u", size);
snprintf(name, sizeof(name), "bf_I%u", size);
- mode = new_int_mode(name, irma_twos_complement, size, 1,
0
);
+ mode = new_int_mode(name, irma_twos_complement, size, 1,
modulo_shift
);
s_modes[size] = mode;
}
s_modes[size] = mode;
}
@@
-517,10
+519,12
@@
static ir_type *get_unsigned_int_type_for_bit_size(ir_type *base_tp,
mode = u_modes[size];
if (mode == NULL) {
mode = u_modes[size];
if (mode == NULL) {
- char name[32];
+ ir_mode *base_mode = get_type_mode(base_tp);
+ unsigned modulo_shift = get_mode_modulo_shift(base_mode);
+ char name[32];
snprintf(name, sizeof(name), "bf_U%u", size);
snprintf(name, sizeof(name), "bf_U%u", size);
- mode = new_int_mode(name, irma_twos_complement, size, 0,
0
);
+ mode = new_int_mode(name, irma_twos_complement, size, 0,
modulo_shift
);
u_modes[size] = mode;
}
u_modes[size] = mode;
}