#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("usage:\n"
         "    -v, --verbose\n"
         "        enable verbose output.\n"
         "    -h, --help\n"
         "        print this help and quit.\n"
         "    -u, --use-ufs\n"
         "        perform benchmark on the underlying file system\n"
         "    -d, --drop-caches\n"
         "        try to drop caches between runs. usually requires root.\n"
         "    -f, --file-name\n"
         "        target file name.\n"
         "    -n, --num-records\n"
         "        number of records to read/write.\n"
         "    -x, --record-size\n"
         "        size of each record.\n"
         "    -c, --compressibility\n"
         "        populate records with data that a compression algorithm\n"
         "        would likely reduce by a given factor\n"
         "    -m, --cache-size-mb\n"
         "        set the cache size in mb for non ufs runs\n"
         "    --serial-read\n"
         "        perform the serial read benchmark. target file required\n"
         "        if no write benchmark is specified\n"
         "    --serial-write\n"
         "        perform the serial write benchmark\n"
         "    --random-read\n"
         "        pefform the random read benchmark. target file required\n"
         "        if no write benchmark is specified\n"
         "    --random-write\n"
         "        perform the random write benchmark\n"
         "Note: If none of serial/random read/write are specified,\n"
         "      all are assumed.\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 = [1090 x i8] c"usage:\0A -v, --verbose\0A enable verbose output.\0A -h, --help\0A print this help and quit.\0A -u, --use-ufs\0A perform benchmark on the underlying file system\0A -d, --drop-caches\0A try to drop caches between runs. usually requires root.\0A -f, --file-name\0A target file name.\0A -n, --num-records\0A number of records to read/write.\0A -x, --record-size\0A size of each record.\0A -c, --compressibility\0A populate records with data that a compression algorithm\0A would likely reduce by a given factor\0A -m, --cache-size-mb\0A set the cache size in mb for non ufs runs\0A --serial-read\0A perform the serial read benchmark. target file required\0A if no write benchmark is specified\0A --serial-write\0A perform the serial write benchmark\0A --random-read\0A pefform the random read benchmark. target file required\0A if no write benchmark is specified\0A --random-write\0A perform the random write benchmark\0ANote: If none of serial/random read/write are specified,\0A all are assumed.\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1090 x i8], [1090 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1089 x i8] c"usage:\0A -v, --verbose\0A enable verbose output.\0A -h, --help\0A print this help and quit.\0A -u, --use-ufs\0A perform benchmark on the underlying file system\0A -d, --drop-caches\0A try to drop caches between runs. usually requires root.\0A -f, --file-name\0A target file name.\0A -n, --num-records\0A number of records to read/write.\0A -x, --record-size\0A size of each record.\0A -c, --compressibility\0A populate records with data that a compression algorithm\0A would likely reduce by a given factor\0A -m, --cache-size-mb\0A set the cache size in mb for non ufs runs\0A --serial-read\0A perform the serial read benchmark. target file required\0A if no write benchmark is specified\0A --serial-write\0A perform the serial write benchmark\0A --random-read\0A pefform the random read benchmark. target file required\0A if no write benchmark is specified\0A --random-write\0A perform the random write benchmark\0ANote: If none of serial/random read/write are specified,\0A all are assumed.\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1089 x i8], [1089 x i8]* @str, i64 0, i64 0))
ret void
}