circuitpython/py
Jeff Epler cae02f1cdf
Speed LTO builds by using multiple threads
On my i5-1235U laptop this speeds LTO "partition=balanced" builds
substantially, because each "partition" can be run on a separate
CPU thread. I used "pygamer" as my test build with a parallelism of
`-j4`, and took the best elapsed time reported over 4 builds.

The improvement was from 34.6s to 24.0s (-30%).

A link-only build (rm build-pygamer/firmware.elf; make -j...) improved
from1 17.4s to 5.1s (-70%)

The size of the resulting firmware is unchanged.

Boards that are nearly full use "-flto-partition=one" to improve code
size optimization. When LTO partition is "one", this feature doesn't help
but it doesn't seem to negatively affect anything either (tested
building trinket_m0)
2023-06-20 11:01:46 -05:00
..
argcheck.c runtime: Add mp_arg_validate_float_range 2023-05-04 07:23:48 -05:00
asmarm.c Merge tag 'v1.16' 2021-06-18 10:54:19 -05:00
asmarm.h Merge tag 'v1.16' 2021-06-18 10:54:19 -05:00
asmbase.c Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
asmbase.h Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
asmthumb.c fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
asmthumb.h Merge tag 'v1.16' 2021-06-18 10:54:19 -05:00
asmx64.c py/asmx64: Support use of top 8 regs in src_r64 argument. 2021-05-20 23:43:25 +10:00
asmx64.h Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
asmx86.c Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
asmx86.h Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
asmxtensa.c Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
asmxtensa.h Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
bc0.h Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
bc.c Improve iMX RT performance 2023-03-14 12:30:58 -07:00
bc.h Explicitly ignore unused variables (fixes #6158) 2022-03-15 22:33:10 -07:00
binary.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
binary.h Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
builtin.h Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
builtinevex.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
builtinhelp.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
builtinimport.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
circuitpy_defns.mk Speed LTO builds by using multiple threads 2023-06-20 11:01:46 -05:00
circuitpy_mkenv.mk refactor common port specific Makefile code 2022-11-18 23:00:28 +05:30
circuitpy_mpconfig.h Fix ticks 2023-04-07 09:49:51 -07:00
circuitpy_mpconfig.mk Add PicoDVI support 2023-04-19 15:14:02 -07:00
compile.c fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
compile.h Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
dynruntime.h Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
dynruntime.mk all: Remove MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE. 2021-09-16 16:04:03 +10:00
emit.h Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
emitbc.c remove lib from exludes, fix all remaining typos 2023-03-23 13:59:08 +07:00
emitcommon.c Merge MicroPython 1.10 into CircuitPython 2021-04-21 15:59:17 -07:00
emitglue.c Uncomment or remove debugging changes 2022-07-08 12:53:25 -04:00
emitglue.h Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
emitinlinethumb.c Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
emitinlinextensa.c Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
emitnarm.c py/emitnative: Add support for return/break/continue in try and with. 2018-09-04 14:31:28 +10:00
emitnative.c remove lib from exludes, fix all remaining typos 2023-03-23 13:59:08 +07:00
emitnthumb.c py/emitnative: Add support for return/break/continue in try and with. 2018-09-04 14:31:28 +10:00
emitnx64.c py/emitnative: Add support for return/break/continue in try and with. 2018-09-04 14:31:28 +10:00
emitnx86.c Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
emitnxtensa.c py/emitnative: Add support for return/break/continue in try and with. 2018-09-04 14:31:28 +10:00
emitnxtensawin.c Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
enum.c Improve type validation errors messages, especially for pins 2023-01-10 15:02:55 -05:00
enum.h core: Allow enum types to specify additional fields in the object 2023-05-21 13:22:48 -05:00
formatfloat.c fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
formatfloat.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
frozenmod.c Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
frozenmod.h Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
gc_long_lived.c Initial broadcom port for Raspberry Pi 2021-11-22 14:54:44 -08:00
gc_long_lived.h Introduce a long lived section of the heap. 2018-01-24 10:33:46 -08:00
gc.c Fix for #2204 2023-05-15 21:35:16 +01:00
gc.h Add two stage reset for BLE 2022-05-12 13:20:44 -07:00
genlast.py run updated pre-commit 2023-02-01 13:38:41 +05:30
grammar.h Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
lexer.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
lexer.h Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
makecompresseddata.py fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
makemoduledefs.py codeformat: Fix handling of ** 2021-04-30 15:30:13 -05:00
makeqstrdata.py run updated pre-commit 2023-02-01 13:38:41 +05:30
makeqstrdefs.py fix display of the 'host not found' message 2022-12-01 19:46:17 -06:00
maketranslationdata.py run updated pre-commit 2023-02-01 13:38:41 +05:30
makeversionhdr.py Move git command to update necessary tags to submodule 2023-04-25 16:05:20 -06:00
malloc.c pico w: add ssl module 2022-10-05 13:12:43 -04:00
map.c Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
misc.h pico w: add ssl module 2022-10-05 13:12:43 -04:00
mkenv.mk Always use python3 2021-10-15 15:11:21 -05:00
mkrules.cmake py/mkrules.cmake: Set frozen preprocessor defs early. 2021-12-18 00:05:18 +11:00
mkrules.mk fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
modarray.c Merge MicroPython v1.11 into CircuitPython 2021-04-26 15:47:41 -07:00
modbuiltins.c save about 112 bytes 2022-10-09 19:22:39 -04:00
modcmath.c Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
modcollections.c codeformat 2021-04-19 22:22:44 -07:00
modgc.c codeformat 2021-04-19 22:22:44 -07:00
modio.c Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
modmath.c Use a function to raise ZeroDivisionError, consistent string 2022-11-30 14:39:30 -06:00
modmicropython.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
modstruct.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
modsys.c Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
modthread.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
moduerrno.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
mpconfig.h Improve iMX RT performance 2023-03-14 12:30:58 -07:00
mperrno.h Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
mphal.h Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
mpprint.c Make %p include the 0x prefix 2021-08-29 11:36:29 -05:00
mpprint.h Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
mpstate.c Add license to some obvious files. 2020-07-06 19:16:25 +01:00
mpstate.h pico w: add ssl module 2022-10-05 13:12:43 -04:00
mpthread.h Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
mpz.c Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
mpz.h Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
nativeglue.c Fix up all natmod examples 2021-05-08 20:17:16 -05:00
nativeglue.h Fix up all natmod examples 2021-05-08 20:17:16 -05:00
nlr.c codeformat 2021-04-19 22:22:44 -07:00
nlr.h Merge MicroPython v1.15 into CircuitPython 2021-05-12 17:51:42 -07:00
nlraarch64.c Merge tag 'v1.16' 2021-06-18 10:54:19 -05:00
nlrpowerpc.c Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
nlrsetjmp.c Add license to some obvious files. 2020-07-06 19:16:25 +01:00
nlrthumb.c Use returns_twice attribute to preserve regs in nlrthumb nlr_push() 2022-12-20 22:18:43 -05:00
nlrx64.c Merge tag 'v1.16' 2021-06-18 10:54:19 -05:00
nlrx86.c Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
nlrxtensa.c codeformat 2021-04-19 22:22:44 -07:00
obj.c Improve type validation errors messages, especially for pins 2023-01-10 15:02:55 -05:00
obj.h Improve iMX RT performance 2023-03-14 12:30:58 -07:00
objarray.c Fix memoryview.cast over sliced memoryview 2023-05-18 13:26:50 -07:00
objarray.h Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
objattrtuple.c Rename EXTENDED_FIELDS -> MP_TYPE_EXTENDED_FIELDS 2021-07-12 06:57:59 -05:00
objbool.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objboundmeth.c Rename EXTENDED_FIELDS -> MP_TYPE_EXTENDED_FIELDS 2021-07-12 06:57:59 -05:00
objcell.c codeformat 2021-04-19 22:22:44 -07:00
objclosure.c Rename EXTENDED_FIELDS -> MP_TYPE_EXTENDED_FIELDS 2021-07-12 06:57:59 -05:00
objcomplex.c Use a function to raise ZeroDivisionError, consistent string 2022-11-30 14:39:30 -06:00
objdeque.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
objdict.c Improve iMX RT performance 2023-03-14 12:30:58 -07:00
objenumerate.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objexcept.c fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
objexcept.h Fix several places where an exception could be chained wrongly 2023-02-10 09:06:47 -06:00
objfilter.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objfloat.c Use a function to raise ZeroDivisionError, consistent string 2022-11-30 14:39:30 -06:00
objfun.c Improve iMX RT performance 2023-03-14 12:30:58 -07:00
objfun.h Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
objgenerator.c Fix several places where an exception could be chained wrongly 2023-02-10 09:06:47 -06:00
objgenerator.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
objgetitemiter.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objint_longlong.c Use a function to raise ZeroDivisionError, consistent string 2022-11-30 14:39:30 -06:00
objint_mpz.c Use a function to raise ZeroDivisionError, consistent string 2022-11-30 14:39:30 -06:00
objint.c re-use an error message 2022-11-30 14:39:34 -06:00
objint.h Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
objlist.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
objlist.h Separate out mp_obj_list_insert for use in display.Group 2021-02-27 21:13:55 +01:00
objmap.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objmodule.c don't explicitly register ulab here 2023-02-17 09:21:50 -06:00
objmodule.h Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
objnamedtuple.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
objnamedtuple.h Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objnone.c Rename EXTENDED_FIELDS -> MP_TYPE_EXTENDED_FIELDS 2021-07-12 06:57:59 -05:00
objobject.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
objpolyiter.c Rename EXTENDED_FIELDS -> MP_TYPE_EXTENDED_FIELDS 2021-07-12 06:57:59 -05:00
objproperty.c Improve iMX RT performance 2023-03-14 12:30:58 -07:00
objproperty.h Enable squeezing property storage in flash 2022-05-03 08:48:53 -05:00
objrange.c Merge some messages 2022-11-30 14:39:47 -06:00
objreversed.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objset.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
objsingleton.c Rename EXTENDED_FIELDS -> MP_TYPE_EXTENDED_FIELDS 2021-07-12 06:57:59 -05:00
objslice.c Merge some messages 2022-11-30 14:39:47 -06:00
objstr.c Simplify argument checking to reduce translated strings 2022-11-07 12:37:11 -06:00
objstr.h Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objstringio.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
objstringio.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
objstrunicode.c Improve type validation errors messages, especially for pins 2023-01-10 15:02:55 -05:00
objtraceback.c objtraceback: merge with an existing message in objtype 2021-08-23 20:23:23 -05:00
objtraceback.h add traceback object 2021-08-04 12:10:57 +05:30
objtuple.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
objtuple.h update espnow api 2023-01-23 23:51:10 +05:30
objtype.c fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
objtype.h Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
objzip.c Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
opmethods.c Rename mp_type_binary_op -> mp_type_get_binary_op_slot 2021-07-12 07:03:52 -05:00
pairheap.c py/pairheap: Properly unlink node on pop and delete. 2020-03-26 01:21:04 +11:00
pairheap.h py/pairheap: Add helper function to initialise a new node. 2020-03-26 01:21:04 +11:00
parse.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
parse.h Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
parsenum.c Use a standard validator 2022-11-30 14:39:33 -06:00
parsenum.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
parsenumbase.c codeformat 2021-04-19 22:22:44 -07:00
parsenumbase.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
persistentcode.c save about 112 bytes 2022-10-09 19:22:39 -04:00
persistentcode.h Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
profile.c Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
profile.h Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
proto.c Conditionalize LTO 2022-05-27 12:59:54 -07:00
proto.h Rename mp_type_protocol -> mp_type_get_protocol_slot 2021-07-12 07:04:04 -05:00
py.cmake add traceback object 2021-08-04 12:10:57 +05:30
py.mk use python based msgfmt 2023-02-13 11:22:35 +05:30
pystack.c Improve iMX RT performance 2023-03-14 12:30:58 -07:00
pystack.h Improve iMX RT performance 2023-03-14 12:30:58 -07:00
qstr.c Improve iMX RT performance 2023-03-14 12:30:58 -07:00
qstr.h Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
qstrdefs.h Remove unused static qstrs 2022-11-30 12:06:15 -06:00
reader.c Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
reader.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
repl.c restore a redundant NULL-comparison, it silences compiler diagnostics 2021-06-18 11:24:39 -05:00
repl.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
ringbuf.c update espnow api 2023-01-23 23:51:10 +05:30
ringbuf.h update espnow api 2023-01-23 23:51:10 +05:30
runtime0.h Merge MicroPython 1.12 into CircuitPython 2021-05-03 14:01:18 -07:00
runtime_utils.c WIP: after merge; before testing 2018-07-11 16:45:30 -04:00
runtime.c Merge branch 'main' into add-codespell 2023-03-23 14:09:57 +07:00
runtime.h runtime: Add mp_arg_validate_float_range 2023-05-04 07:23:48 -05:00
scheduler.c refactor traceback handling 2021-11-10 20:23:33 +05:30
scope.c Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
scope.h remove lib from exludes, fix all remaining typos 2023-03-23 13:59:08 +07:00
sequence.c fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
showbc.c Merge tag 'v1.18' 2022-02-15 12:36:26 -06:00
smallint.c Add license to some obvious files. 2020-07-06 19:16:25 +01:00
smallint.h Merge tag 'v1.17' into merge-1.17 2021-10-15 08:20:54 -05:00
stackctrl.c Guard GCC13 pragma 2023-04-28 11:28:48 -07:00
stackctrl.h Merge tag 'v1.16' 2021-06-18 10:54:19 -05:00
stream.c When reading data from a file into a str, check if it's utf-8 2022-08-12 08:25:27 -05:00
stream.h Move mp_get_stream non-inline 2021-05-05 11:00:35 -05:00
unicode.c Merge MicroPython 1.13 into CircuitPython 2021-05-04 18:06:33 -07:00
unicode.h Add license to some obvious files. 2020-07-06 19:16:25 +01:00
usermod.cmake rp2: Add support for USER_C_MODULES to CMake build system. 2021-03-31 00:26:01 +11:00
vm.c do not chain exceptions to themselves 2023-01-04 08:40:20 -06:00
vmentrytable.h Merge MicroPython 1.14 into CircuitPython 2021-05-11 15:07:40 -07:00
vstr.c Merge MicroPython v1.11 into CircuitPython 2021-04-26 15:47:41 -07:00
warning.c Merge MicroPython v1.11 into CircuitPython 2021-04-26 15:47:41 -07:00