-
Notifications
You must be signed in to change notification settings - Fork 3k
Compiler profiles for size optimization #2973
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
{ | ||
"GCC_ARM": { | ||
"common": ["-c", "-Wall", "-Wextra", | ||
"-Wno-unused-parameter", "-Wno-missing-field-initializers", | ||
"-fmessage-length=0", "-fno-exceptions", "-fno-builtin", | ||
"-ffunction-sections", "-fdata-sections", "-funsigned-char", | ||
"-MMD", "-fno-delete-null-pointer-checks", | ||
"-fomit-frame-pointer", "-O1", "-g"], | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe the reason debug symbols aren't turn on in all configurations is because this increases build sizes too much for testing and the online IDE. @screamerbg, @bridadan or @0xc0170 can you confirm this? If debug symbols could be turned on/off independent of the profile the each of the profiles wouldn't need have a corresponding "debug-*" profile to add symbols. This would be especially useful if the binary output doesn't change (which it shouldn't). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @c1728p9 That's correct. Good catch! |
||
"asm": ["-x", "assembler-with-cpp"], | ||
"c": ["-std=gnu99"], | ||
"cxx": ["-std=gnu++98", "-fno-rtti", "-Wvla"], | ||
"ld": ["-Wl,--gc-sections", "-Wl,--wrap,main", "-Wl,--wrap,_malloc_r", | ||
"-Wl,--wrap,_free_r", "-Wl,--wrap,_realloc_r", | ||
"-Wl,--wrap,_calloc_r", "-Wl,--wrap,exit", "-Wl,--wrap,atexit"] | ||
}, | ||
"ARM": { | ||
"common": ["-c", "--gnu", "-Ospace", "--split_sections", | ||
"--apcs=interwork", "--brief_diagnostics", "--restrict", | ||
"--multibyte_chars", "-O1", "-g"], | ||
"asm": [], | ||
"c": ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"], | ||
"cxx": ["--cpp", "--no_rtti", "--no_vla"], | ||
"ld": [] | ||
}, | ||
"uARM": { | ||
"common": ["-c", "--gnu", "-Ospace", "--split_sections", | ||
"--apcs=interwork", "--brief_diagnostics", "--restrict", | ||
"--multibyte_chars", "-O1", "-D__MICROLIB", "-g", | ||
"--library_type=microlib", "-DMBED_RTOS_SINGLE_THREAD"], | ||
"asm": [], | ||
"c": ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"], | ||
"cxx": ["--cpp", "--no_rtti", "--no_vla"], | ||
"ld": ["--library_type=microlib"] | ||
}, | ||
"IAR": { | ||
"common": [ | ||
"--no_wrap_diagnostics", "-e", | ||
"--diag_suppress=Pa050,Pa084,Pa093,Pa082", "-Ol", "-r"], | ||
"asm": [], | ||
"c": ["--vla"], | ||
"cxx": ["--guard_calls", "--no_static_destruction"], | ||
"ld": ["--skip_dynamic_initialization", "--threaded_lib"] | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
{ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Size doesn't really imply big or small. Maybe rename this file to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These profiles need docs. Feel free to pull the DOCs from pr #3005. |
||
"GCC_ARM": { | ||
"common": ["-c", "-Wall", "-Wextra", | ||
"-Wno-unused-parameter", "-Wno-missing-field-initializers", | ||
"-fmessage-length=0", "-fno-exceptions", "-fno-builtin", | ||
"-ffunction-sections", "-fdata-sections", "-funsigned-char", | ||
"-MMD", "-fno-delete-null-pointer-checks", | ||
"-fomit-frame-pointer", "-Os"], | ||
"asm": ["-x", "assembler-with-cpp"], | ||
"c": ["-std=gnu99"], | ||
"cxx": ["-std=gnu++98", "-fno-rtti", "-Wvla"], | ||
"ld": ["-Wl,--gc-sections", "-Wl,--wrap,main", "-Wl,--wrap,_malloc_r", | ||
"-Wl,--wrap,_free_r", "-Wl,--wrap,_realloc_r", | ||
"-Wl,--wrap,_calloc_r", "-Wl,--wrap,exit", "-Wl,--wrap,atexit"] | ||
}, | ||
"ARM": { | ||
"common": ["-c", "--gnu", "-Ospace", "--split_sections", | ||
"--apcs=interwork", "--brief_diagnostics", "--restrict", | ||
"--multibyte_chars", "-O3"], | ||
"asm": [], | ||
"c": ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"], | ||
"cxx": ["--cpp", "--no_rtti", "--no_vla"], | ||
"ld": [] | ||
}, | ||
"uARM": { | ||
"common": ["-c", "--gnu", "-Ospace", "--split_sections", | ||
"--apcs=interwork", "--brief_diagnostics", "--restrict", | ||
"--multibyte_chars", "-O3", "-D__MICROLIB", | ||
"--library_type=microlib", "-DMBED_RTOS_SINGLE_THREAD"], | ||
"asm": [], | ||
"c": ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"], | ||
"cxx": ["--cpp", "--no_rtti", "--no_vla"], | ||
"ld": ["--library_type=microlib"] | ||
}, | ||
"IAR": { | ||
"common": [ | ||
"--no_wrap_diagnostics", "-e", | ||
"--diag_suppress=Pa050,Pa084,Pa093,Pa082", "-Ohz"], | ||
"asm": [], | ||
"c": ["--vla"], | ||
"cxx": ["--guard_calls", "--no_static_destruction"], | ||
"ld": ["--skip_dynamic_initialization", "--threaded_lib"] | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With
-O1
the optimization level is changed from the size.json configuration. This is one more configuration to verify. I would recommend sticking with just one size profile.