Whole program optimization / Link time optimization

"Wayne Uroda" <[email protected]>
Newsgroups gmane.comp.hardware.texas-instruments.msp430.gcc.user
Message-ID <[email protected]>
Hi,

Can anybody comment on LTO or WPO’s effect on optimizing for space  - I have run out of flash memory and would rather not refactor my code at the moment. I only need 10 more bytes or so, for today at least... Yes it’s not ideal, such is life.

I am using mspgcc 20120406-p20120911 and when I pass `–flto` in both the compilation and link stages it compiles fine but the linker complains “unrecognized option '-plugin'”. I assume LTO isn’t supported at this time?

So then I skipped intermediate .o files altogether and used the following command:
msp430-gcc -mmcu=msp430f233 -Os -Wall -Werror -o Coyote.elf <all c files>

I get the expected message that my code does not fit.

Using –fwhole-program:
msp430-gcc -mmcu=msp430f233 -Os -Wall -Werror -fwhole-program -o Coyote.elf <all c files>

I get the following output:
C:\Users\WAYNEU~1\AppData\Local\Temp\cclYmoCC.o: In function `main':
main.c:(.init9+0x2): undefined reference to `systemDisableInterrupts'
main.c:(.init9+0x6): undefined reference to `PlatformInit'
main.c:(.init9+0xc): undefined reference to `systemEnableCrystalClock'
main.c:(.init9+0x2a): undefined reference to `delay'
main.c:(.init9+0x44): undefined reference to `delay'
main.c:(.init9+0x5e): undefined reference to `delay'
main.c:(.init9+0x78): undefined reference to `delay'
main.c:(.init9+0x80): undefined reference to `delay'
C:\Users\WAYNEU~1\AppData\Local\Temp\cclYmoCC.o:main.c:(.init9+0xa4): more undefined references to `delay' follow
C:\Users\WAYNEU~1\AppData\Local\Temp\cclYmoCC.o: In function `main':
main.c:(.init9+0xf8): undefined reference to `batteryGetStateOfCharge'
main.c:(.init9+0x104): undefined reference to `chargeIsPresent'
main.c:(.init9+0x118): undefined reference to `delay'
main.c:(.init9+0x134): undefined reference to `delay'
main.c:(.init9+0x138): undefined reference to `infomemValidate'
main.c:(.init9+0x13c): undefined reference to `logicMainLoop'
collect2: ld returned 1 exit status


I then created two files, test1.c and test2.c

test1.c:
-------------------------------
void test2(void);

void test1(void)
{
    test2();
}

int main()
{
    test2();
    return 0;
}

-------------------------------

test2.c:
-------------------------------
void test1(void);

void test2(void)
{
    test1();
}

-------------------------------

Compiling them:
msp430-gcc -mmcu=msp430f233 -Os -Wall -Werror -fwhole-program -o test.elf test1.c test2.c

C:\Users\WAYNEU~1\AppData\Local\Temp\ccs3TYlw.o: In function `main':
test1.c:(.init9+0x2): undefined reference to `test2'
collect2: ld returned 1 exit status

Have I done something wrong?

In the meantime, I will refactor. I don’t even expect WPO/LTO to give me much of a space saving anyway.

- Wayne

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter

_______________________________________________
Mspgcc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mspgcc-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.