summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDaniel Tralamazza <daniel@tralamazza.com>2016-07-08 15:46:01 +0200
committerDamien George <damien.p.george@gmail.com>2016-07-11 12:04:56 +0100
commit9626662819ebd677106ba2655c4370912bef8588 (patch)
tree4e2765a746334353b8b26abe2d148b30bafc789f
parent7711d87563f5ffe508eaea558299946469153928 (diff)
downloadmicropython-9626662819ebd677106ba2655c4370912bef8588.tar.gz
micropython-9626662819ebd677106ba2655c4370912bef8588.zip
qemu-arm: Enable gcc LTO option for nlrthumb.c
LTO can't "see" inside naked functions, but we can mark `nlr_push_tail` as used.
-rw-r--r--py/nlrthumb.c2
-rw-r--r--qemu-arm/Makefile3
2 files changed, 1 insertions, 4 deletions
diff --git a/py/nlrthumb.c b/py/nlrthumb.c
index a61c73c036..b57d8df464 100644
--- a/py/nlrthumb.c
+++ b/py/nlrthumb.c
@@ -71,7 +71,7 @@ __attribute__((naked)) unsigned int nlr_push(nlr_buf_t *nlr) {
return 0; // needed to silence compiler warning
}
-unsigned int nlr_push_tail(nlr_buf_t *nlr) {
+__attribute__((used)) unsigned int nlr_push_tail(nlr_buf_t *nlr) {
nlr_buf_t **top = &MP_STATE_THREAD(nlr_top);
nlr->prev = *top;
*top = nlr;
diff --git a/qemu-arm/Makefile b/qemu-arm/Makefile
index d09282a1e8..31ba6baa26 100644
--- a/qemu-arm/Makefile
+++ b/qemu-arm/Makefile
@@ -53,9 +53,6 @@ OBJ_TEST += $(addprefix $(BUILD)/, $(SRC_TEST_C:.c=.o))
OBJ_TEST += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
OBJ_TEST += $(BUILD)/tinytest.o
-# we can't use LTO for nlrthumb.c because it contains inline assembler
-$(PY_BUILD)/nlrthumb.o: CFLAGS += -fno-lto
-
all: run
run: $(BUILD)/firmware.elf