#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 [-ahnpvtsz] [-d debugopts] [slab-regexp]\n"
         "-a|--aliases           Show aliases\n"
         "-A|--activity          Most active slabs first\n"
         "-d<options>|--debug=<options> Set/Clear Debug options\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"
         "-n|--numa              Show NUMA information\n"
         "-o|--ops		Show kmem_cache_ops\n"
         "-s|--shrink            Shrink slabs\n"
         "-r|--report		Detailed report on single slabs\n"
         "-S|--Size              Sort by size\n"
         "-t|--tracking          Show alloc/free information\n"
         "-T|--Totals            Show summary information\n"
         "-v|--validate          Validate slabs\n"
         "-z|--zero              Include empty slabs\n"
         "-1|--1ref              Single reference\n"
         "\nValid debug options (FZPUT may be combined)\n"
         "a / A          Switch on all debug options (=FZUP)\n"
         "-              Switch off all debug options\n"
         "f / F          Sanity Checks (SLAB_DEBUG_FREE)\n"
         "z / Z          Redzoning\n"
         "p / P          Poisoning\n"
         "u / U          Tracking\n"
         "t / T          Tracing\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 = [1196 x i8] c"slabinfo 4/15/2011. (c) 2007 sgi/(c) 2011 Linux Foundation.\0A\0Aslabinfo [-ahnpvtsz] [-d debugopts] [slab-regexp]\0A-a|--aliases Show aliases\0A-A|--activity Most active slabs first\0A-d<options>|--debug=<options> Set/Clear Debug options\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-n|--numa Show NUMA information\0A-o|--ops\09\09Show kmem_cache_ops\0A-s|--shrink Shrink slabs\0A-r|--report\09\09Detailed report on single slabs\0A-S|--Size Sort by size\0A-t|--tracking Show alloc/free information\0A-T|--Totals Show summary information\0A-v|--validate Validate slabs\0A-z|--zero Include empty slabs\0A-1|--1ref Single reference\0A\0AValid debug options (FZPUT may be combined)\0Aa / A Switch on all debug options (=FZUP)\0A- Switch off all debug options\0Af / F Sanity Checks (SLAB_DEBUG_FREE)\0Az / Z Redzoning\0Ap / P Poisoning\0Au / U Tracking\0At / T Tracing\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1196 x i8], [1196 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1195 x i8] c"slabinfo 4/15/2011. (c) 2007 sgi/(c) 2011 Linux Foundation.\0A\0Aslabinfo [-ahnpvtsz] [-d debugopts] [slab-regexp]\0A-a|--aliases Show aliases\0A-A|--activity Most active slabs first\0A-d<options>|--debug=<options> Set/Clear Debug options\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-n|--numa Show NUMA information\0A-o|--ops\09\09Show kmem_cache_ops\0A-s|--shrink Shrink slabs\0A-r|--report\09\09Detailed report on single slabs\0A-S|--Size Sort by size\0A-t|--tracking Show alloc/free information\0A-T|--Totals Show summary information\0A-v|--validate Validate slabs\0A-z|--zero Include empty slabs\0A-1|--1ref Single reference\0A\0AValid debug options (FZPUT may be combined)\0Aa / A Switch on all debug options (=FZUP)\0A- Switch off all debug options\0Af / F Sanity Checks (SLAB_DEBUG_FREE)\0Az / Z Redzoning\0Ap / P Poisoning\0Au / U Tracking\0At / T Tracing\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1195 x i8], [1195 x i8]* @str, i64 0, i64 0))
ret void
}