gzip: Improve ptr_to_globals trick, allowing gcc
to optimize better. -480 bytes.
This commit is contained in:
parent
1cc70225e7
commit
bff32ce4d5
@ -2045,8 +2045,8 @@ int gzip_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ptr_to_globals = xzalloc(sizeof(struct globals) + sizeof(struct globals2));
|
PTR_TO_GLOBALS = xzalloc(sizeof(struct globals) + sizeof(struct globals2))
|
||||||
ptr_to_globals++;
|
+ sizeof(struct globals);
|
||||||
G2.l_desc.dyn_tree = G2.dyn_ltree;
|
G2.l_desc.dyn_tree = G2.dyn_ltree;
|
||||||
G2.l_desc.static_tree = G2.static_ltree;
|
G2.l_desc.static_tree = G2.static_ltree;
|
||||||
G2.l_desc.extra_bits = extra_lbits;
|
G2.l_desc.extra_bits = extra_lbits;
|
||||||
|
@ -804,7 +804,10 @@ extern char bb_common_bufsiz1[BUFSIZ+1];
|
|||||||
/* This struct is deliberately not defined. */
|
/* This struct is deliberately not defined. */
|
||||||
/* See docs/keep_data_small.txt */
|
/* See docs/keep_data_small.txt */
|
||||||
struct globals;
|
struct globals;
|
||||||
extern struct globals *ptr_to_globals;
|
/* Magic prevents this from going into rodata */
|
||||||
|
/* If you want to assign a value, use PTR_TO_GLOBALS = xxx */
|
||||||
|
extern struct globals *const ptr_to_globals;
|
||||||
|
#define PTR_TO_GLOBALS (*(struct globals**)&ptr_to_globals)
|
||||||
|
|
||||||
/* You can change LIBBB_DEFAULT_LOGIN_SHELL, but don't use it,
|
/* You can change LIBBB_DEFAULT_LOGIN_SHELL, but don't use it,
|
||||||
* use bb_default_login_shell and following defines.
|
* use bb_default_login_shell and following defines.
|
||||||
|
@ -57,4 +57,5 @@ WTMP_FILE;
|
|||||||
char bb_common_bufsiz1[BUFSIZ+1];
|
char bb_common_bufsiz1[BUFSIZ+1];
|
||||||
|
|
||||||
struct globals;
|
struct globals;
|
||||||
struct globals *ptr_to_globals;
|
/* Make it reside in R/W memory: */
|
||||||
|
struct globals *const ptr_to_globals __attribute__ ((section (".data")));
|
||||||
|
Loading…
Reference in New Issue
Block a user