Skip to content

Commit

Permalink
Try fixing c++ compiler warnings about unknown union size. Fix JuliaL…
Browse files Browse the repository at this point in the history
  • Loading branch information
yuyichao committed Sep 17, 2015
1 parent 01d3178 commit ec05923
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 13 deletions.
4 changes: 2 additions & 2 deletions src/dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ static void jl_serialize_datatype(ios_t *s, jl_datatype_t *dt)
write_int32(s, dt->alignment);
write_int8(s, dt->haspadding);
size_t fieldsize = jl_fielddesc_size(dt->fielddesc_type);
ios_write(s, (char*)&dt->fields32[0], nf * fieldsize);
ios_write(s, (char*)dt->fields, nf * fieldsize);
jl_serialize_value(s, dt->types);
}

Expand Down Expand Up @@ -1129,7 +1129,7 @@ static jl_value_t *jl_deserialize_datatype(ios_t *s, int pos, jl_value_t **loc)
dt->alignment = read_int32(s);
dt->haspadding = read_int8(s);
size_t fieldsize = jl_fielddesc_size(fielddesc_type);
ios_read(s, (char*)&dt->fields32[0], nf * fieldsize);
ios_read(s, (char*)dt->fields, nf * fieldsize);
dt->types = (jl_svec_t*)jl_deserialize_value(s, (jl_value_t**)&dt->types);
jl_gc_wb(dt, dt->types);
}
Expand Down
18 changes: 7 additions & 11 deletions src/julia.h
Original file line number Diff line number Diff line change
Expand Up @@ -290,11 +290,7 @@ typedef struct _jl_datatype_t {
uint32_t uid;
void *struct_decl; //llvm::Value*
void *ditype; // llvm::MDNode* to be used as llvm::DIType(ditype)
union {
jl_fielddesc8_t fields8[0];
jl_fielddesc16_t fields16[0];
jl_fielddesc32_t fields32[0];
};
size_t fields[];
} jl_datatype_t;

typedef struct {
Expand Down Expand Up @@ -718,26 +714,26 @@ STATIC_INLINE jl_value_t *jl_cellset(void *a, size_t i, void *x)
static inline uint32_t jl_field_##f(jl_datatype_t *st, int i) \
{ \
if (st->fielddesc_type == 0) { \
return st->fields8[i].f; \
return ((jl_fielddesc8_t*)st->fields)[i].f; \
} \
else if (st->fielddesc_type == 1) { \
return st->fields16[i].f; \
return ((jl_fielddesc16_t*)st->fields)[i].f; \
} \
else { \
return st->fields32[i].f; \
return ((jl_fielddesc32_t*)st->fields)[i].f; \
} \
} \
static inline void jl_field_set##f(jl_datatype_t *st, int i, \
uint32_t val) \
{ \
if (st->fielddesc_type == 0) { \
st->fields8[i].f = val; \
((jl_fielddesc8_t*)st->fields)[i].f = val; \
} \
else if (st->fielddesc_type == 1) { \
st->fields16[i].f = val; \
((jl_fielddesc16_t*)st->fields)[i].f = val; \
} \
else { \
st->fields32[i].f = val; \
((jl_fielddesc32_t*)st->fields)[i].f = val; \
} \
}

Expand Down

0 comments on commit ec05923

Please sign in to comment.