rendered paste body#include <stddef.h>#include <alloca.h>struct obj_symbol{ struct obj_symbol *next; unsigned int size;};struct common_entry{ struct common_entry *next; struct obj_symbol *sym;};extern void do_something(struct obj_symbol *sym);void obj_allocate_commons(struct obj_symbol *sym){ struct common_entry *common_head = NULL; for (; sym ; sym = sym->next) { struct common_entry **p, *n; for (p = &common_head; *p ; p = &(*p)->next) if (sym->size <= (*p)->sym->size) break; n = alloca(sizeof(*n)); n->next = *p; n->sym = sym; *p = n; } { struct common_entry *p; for (p = common_head; p ; p = p->next) do_something(p->sym); }}