#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
void usage(void) {
  printf(
      "slabinfo 4/15/2011. (c) 2007 sgi/(c) 2011 Linux Foundation.\n\n"
      "slabinfo [-aABDefhilLnoPrsStTUvXz1] [N=K] [-dafzput] [slab-regexp]\n"
      "-a|--aliases           Show aliases\n"
      "-A|--activity          Most active slabs first\n"
      "-B|--Bytes             Show size in bytes\n"
      "-D|--display-active    Switch line format to activity\n"
      "-e|--empty             Show empty slabs\n"
      "-f|--first-alias       Show first alias\n"
      "-h|--help              Show usage information\n"
      "-i|--inverted          Inverted list\n"
      "-l|--slabs             Show slabs\n"
      "-L|--Loss              Sort by loss\n"
      "-n|--numa              Show NUMA information\n"
      "-N|--lines=K           Show the first K slabs\n"
      "-o|--ops               Show kmem_cache_ops\n"
      "-P|--partial		Sort by number of partial slabs\n"
      "-r|--report            Detailed report on single slabs\n"
      "-s|--shrink            Shrink slabs\n"
      "-S|--Size              Sort by size\n"
      "-t|--tracking          Show alloc/free information\n"
      "-T|--Totals            Show summary information\n"
      "-U|--Unreclaim         Show unreclaimable slabs only\n"
      "-v|--validate          Validate slabs\n"
      "-X|--Xtotals           Show extended summary information\n"
      "-z|--zero              Include empty slabs\n"
      "-1|--1ref              Single reference\n"
      "\n"
      "-d  | --debug          Switch off all debug options\n"
      "-da | --debug=a        Switch on all debug options (--debug=FZPU)\n"
      "\n"
      "-d[afzput] | --debug=[afzput]\n"
      "    f | F              Sanity Checks (SLAB_CONSISTENCY_CHECKS)\n"
      "    z | Z              Redzoning\n"
      "    p | P              Poisoning\n"
      "    u | U              Tracking\n"
      "    t | T              Tracing\n"
      "\nSorting options (--Loss, --Size, --Partial) are mutually exclusive\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1588 x i8] c"slabinfo 4/15/2011. (c) 2007 sgi/(c) 2011 Linux Foundation.\0A\0Aslabinfo [-aABDefhilLnoPrsStTUvXz1] [N=K] [-dafzput] [slab-regexp]\0A-a|--aliases Show aliases\0A-A|--activity Most active slabs first\0A-B|--Bytes Show size in bytes\0A-D|--display-active Switch line format to activity\0A-e|--empty Show empty slabs\0A-f|--first-alias Show first alias\0A-h|--help Show usage information\0A-i|--inverted Inverted list\0A-l|--slabs Show slabs\0A-L|--Loss Sort by loss\0A-n|--numa Show NUMA information\0A-N|--lines=K Show the first K slabs\0A-o|--ops Show kmem_cache_ops\0A-P|--partial\09\09Sort by number of partial slabs\0A-r|--report Detailed report on single slabs\0A-s|--shrink Shrink slabs\0A-S|--Size Sort by size\0A-t|--tracking Show alloc/free information\0A-T|--Totals Show summary information\0A-U|--Unreclaim Show unreclaimable slabs only\0A-v|--validate Validate slabs\0A-X|--Xtotals Show extended summary information\0A-z|--zero Include empty slabs\0A-1|--1ref Single reference\0A\0A-d | --debug Switch off all debug options\0A-da | --debug=a Switch on all debug options (--debug=FZPU)\0A\0A-d[afzput] | --debug=[afzput]\0A f | F Sanity Checks (SLAB_CONSISTENCY_CHECKS)\0A z | Z Redzoning\0A p | P Poisoning\0A u | U Tracking\0A t | T Tracing\0A\0ASorting options (--Loss, --Size, --Partial) are mutually exclusive\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1588 x i8], [1588 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1587 x i8] c"slabinfo 4/15/2011. (c) 2007 sgi/(c) 2011 Linux Foundation.\0A\0Aslabinfo [-aABDefhilLnoPrsStTUvXz1] [N=K] [-dafzput] [slab-regexp]\0A-a|--aliases Show aliases\0A-A|--activity Most active slabs first\0A-B|--Bytes Show size in bytes\0A-D|--display-active Switch line format to activity\0A-e|--empty Show empty slabs\0A-f|--first-alias Show first alias\0A-h|--help Show usage information\0A-i|--inverted Inverted list\0A-l|--slabs Show slabs\0A-L|--Loss Sort by loss\0A-n|--numa Show NUMA information\0A-N|--lines=K Show the first K slabs\0A-o|--ops Show kmem_cache_ops\0A-P|--partial\09\09Sort by number of partial slabs\0A-r|--report Detailed report on single slabs\0A-s|--shrink Shrink slabs\0A-S|--Size Sort by size\0A-t|--tracking Show alloc/free information\0A-T|--Totals Show summary information\0A-U|--Unreclaim Show unreclaimable slabs only\0A-v|--validate Validate slabs\0A-X|--Xtotals Show extended summary information\0A-z|--zero Include empty slabs\0A-1|--1ref Single reference\0A\0A-d | --debug Switch off all debug options\0A-da | --debug=a Switch on all debug options (--debug=FZPU)\0A\0A-d[afzput] | --debug=[afzput]\0A f | F Sanity Checks (SLAB_CONSISTENCY_CHECKS)\0A z | Z Redzoning\0A p | P Poisoning\0A u | U Tracking\0A t | T Tracing\0A\0ASorting options (--Loss, --Size, --Partial) are mutually exclusive\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1587 x i8], [1587 x i8]* @str, i64 0, i64 0))
ret void
}