Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73e734be authored by Chih-Hung Hsieh's avatar Chih-Hung Hsieh
Browse files

Disable tail call optimization and use -mstackrealign to boot up on fugu.

http://llvm.org/bugs/show_bug.cgi?id=15086,
llvm tail call optimization is wrong for x86.

For Android/x86 to use SSE* instructions safely, stack should be 16-byte
aligned before JNI function call, which isn't true for all x86 device,
so -mstackrealign should be the default.

BUG: 19234330
Change-Id: I4c6676366788772dbe64fd7f0dd33b3ed5c9b80e
parent 4eec22a6
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -18,7 +18,15 @@ CLANG_CONFIG_x86_TARGET_EXTRA_CFLAGS := \
  $(CLANG_CONFIG_EXTRA_CFLAGS) \
  $(CLANG_CONFIG_TARGET_EXTRA_CFLAGS) \
  $(CLANG_CONFIG_x86_EXTRA_CFLAGS) \
  $(CLANG_CONFIG_x86_TARGET_EXTRA_ASFLAGS)
  $(CLANG_CONFIG_x86_TARGET_EXTRA_ASFLAGS) \
  -fno-optimize-sibling-calls \
  -mstackrealign

# http://llvm.org/bugs/show_bug.cgi?id=15086,
# llvm tail call optimization is wrong for x86.
# -mstackrealign is needed to realign stack in native code
# that could be called from JNI, so that movaps instruction
# will work on assumed stack aligned local variables.

CLANG_CONFIG_x86_TARGET_EXTRA_CONLYFLAGS := \
  $(CLANG_CONFIG_EXTRA_CONLYFLAGS) \