This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

About Library file

I created a library fuction having two fuction inside
1) Loop1()
2) Loop2()
when i will call the only one fucnction still the copiler will add the code for both,
below i am writing the content of the library file

#pragma SAVE
#pragma REGPARMS
extern void Loop1(void);
extern void Loop2(void);
#pragma RESTORE

void Loop1() { unsigned int i=0; while(i) { i--; }

}

void Loop2() { unsigned char i=0; while(i) { i--; }
how can i avoid this problem

void main() { Loop1(); Loop2(); while(1);

}

Parents
  • Version 8 of the C51 tools includes a lovely new LX51 linker option, REMOVEUNUSED, to remove "dead" (uncalled) code. This helps mitigate this problem to a large extent. You no longer have to break up every .c file into one file per function.

    We have run into occasional bugs with this feature when the linker removes some but not all of the dead code, and we get "unresolved external" type warnings. I think this has something to do with inter-bank calls that turn out to be dead code, but we haven't really narrowed it down yet.

Reply
  • Version 8 of the C51 tools includes a lovely new LX51 linker option, REMOVEUNUSED, to remove "dead" (uncalled) code. This helps mitigate this problem to a large extent. You no longer have to break up every .c file into one file per function.

    We have run into occasional bugs with this feature when the linker removes some but not all of the dead code, and we get "unresolved external" type warnings. I think this has something to do with inter-bank calls that turn out to be dead code, but we haven't really narrowed it down yet.

Children