http://bugzilla.gdcproject.org/show_bug.cgi?id=167
--- Comment #4 from Iain Buclaw <ibuc...@gdcproject.org> --- (In reply to Johannes Pfau from comment #3) > Yes, I hit this issue with 8bit AVRs (pointers/size_t is 16 bit on AVR > although registers are 8bit). Maybe a clean solution is to split > Target::init / Target::init2 and use Target::sizetsize in Type::init? > However, overwriting Type::tsize_t seems to work for now. > Adding more inits won't help. Moving the isLP64 logic (and subsequent setting of Type::tsize/tptrdiff would. > A related question: in d-codegen.cc::build_offset > tree ofs = fold_convert (Type::tsize_t->toCtype(), byte_offset); > > shouldn't this use tptrdiff_t? I think this code could break if wordsize and > pointer size are different. > However, simply changing this to tptrdiff_t breaks the build. I guess we'd > really need a unsigned tptrdiff_t. Yah, there has been an agreement for quite some time now that size_t/ptrdiff_t types don't really mean their C equivalents in the truest sense. Both should be the same size. So if in doubt, just use POINTER_SIZE to determine the correct size_t/ptrdiff_t type in D. We still have __builtin_machine_[u]int and __builtin_pointer_[u]int for C ABI reasons. -- You are receiving this mail because: You are watching all bug changes.