[llvm-dev] Non-native endianness support in Clang
Finkel, Hal J. via llvm-dev
llvm-dev at lists.llvm.org
Mon Aug 26 11:59:13 PDT 2019
On 8/26/19 9:18 AM, Guy Benyei via llvm-dev wrote:
> Hello,
> I'd like to implement the gnu attribute "scalar_storage_order" to mark structs with non-native endianness. My rational is working on network protocols over little endian architecture (for instance: RiscV).
>
> An old bug is open on this issue here:
> https://bugs.llvm.org/show_bug.cgi?id=35293
>
> I'd like to discuss the possible ways to implement this.
>
> The GCC implementation is pretty complicated, touching almost everything, modifying optimizations, etc...:
> https://github.com/gcc-mirror/gcc/commit/292237f3c109f2e0d2752ad1e73181689f7d0d53
>
> I think, it would be better, to implement this attribute in the frontend only, adding the required byte-swaps early.
I agree. Adding the swaps in the frontend seems relatively
straightforward. As I understand it, for non-packed structs, you also
need to adjust the relative position of the padding?
-Hal
>
> Any thoughts, ideas, objections?
>
> Thanks
> Guy Benyei
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-dev
mailing list