On Aug 2, 2011, at 8:49 AM, Sundeep wrote: > I have been working on a bug in clang dealing with alignment of wide > strings. Clang is aligning wide string literals to 1 byte boundary. However, > LLVM treats wide strings as 4 byte aligned and generates memory operations > accessing 4 bytes at a time. This works fine on architectures that allow > unaligned access. But for architectures which don't allow unaligned access, > this results in an exception and segfault.
+ unsigned Align = TI.getWCharAlign() / TI.getCharAlign(); This should be dividing by the bit-width of char, not by its alignment. Also, there are multiple kinds of wide strings — official wide strings (L), and then UTF-16 (u) and UTF-32 (U) wide strings. It would be good if this worked for all of them. You should also make sure that you never *decrease* the alignment of a string, as you might if there were a utf32 string literal followed by a utf16 string literal which expanded to the same sequence of bytes. Also, in the future, please give your patch files some sort of sensible file extension, preferably ".txt". John. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
