<div dir="ltr">(Sorry if this is a double post, I sent this email a few days ago from an e-mail that's not subscribed to the mailing list and it seems to be stuck in moderation).<br clear="all"><div><br></div><div>Hi everyone,<br><br>tl;dr: GCC defines __thumb2__ in ARMv8 and clang doesn't. Is that a bug? Is there a better way to check if thumb2 is supported? Maybe __ARM_ARCH_ISA_THUMB?<br><br>~<br><br>I recently started to work with Webkit in ARMv8 and decided to give clang a try building the javascript engine (called JSC) used by WebKit.<br><br>However, it turns out the JIT was always disabled because of a CMake script that checks if the compiler defines either thumb2 or __thumb2__:<br><br><a href="https://github.com/WebKit/WebKit/blob/363701084a50c009bec41164cdb843df66d769d1/Source/cmake/OptionsCommon.cmake#L31">https://github.com/WebKit/WebKit/blob/363701084a50c009bec41164cdb843df66d769d1/Source/cmake/OptionsCommon.cmake#L31</a></div><div><br>I've tested with some other versions of clang but none seem to define it: <a href="https://godbolt.org/z/WjGh3eTzv">https://godbolt.org/z/WjGh3eTzv</a><br><br>While __thumb2__ is defined in GCC:<br><br>$ gcc -dM -E  main.c  | grep thumb<br>#define __thumb2__ 1<br>#define __thumb__ 1<br><br>clang doesn't define __thumb__ nor __thumb2__.<br><br>I managed to get clang with __thumb2__ defined by:<br>1. Changing the triplet: I eventually got a lot of compilation errors and gave up.<br>2. Added "-D__thumb__=1" to CMAKE_CXX_FLAGS :P and managed to fully build JSC. There were some regressions in a place I was investigating a bug but nothing major.<br><br>Anyway, I guess my questions are:<br>1. Is there a reason why __thumb2__ isn't defined in clang? Do we want it to be defined in clang?<br>2. Should we change WebKit to check if "__ARM_ARCH_ISA_THUMB" is 2 as per [0], instead of __thumb2__? (both GCC and clang seem to define it to 2 in the hardware I'm testing).<br><br>Thanks in advance.<br>Mikhail.<br><br>[0] <a href="https://github.com/llvm/llvm-project/blob/8ee55ab6c06ec9f769f1086e3761c92286d56339/clang/lib/Basic/Targets/ARM.cpp#L709">https://github.com/llvm/llvm-project/blob/8ee55ab6c06ec9f769f1086e3761c92286d56339/clang/lib/Basic/Targets/ARM.cpp#L709</a><br></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><br></div><div>Mikhail R. Gadelha.</div></div></div></div>