#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: "
         "check_file_size_limits [-B bits_per_long] [-P page_cache_size] "
         "[-L CONFIG_LBD] -b <blocksize bits> -c <clustersize bits> "
         "filename\n\n"
         "Tests file I/O at the maximum offsets that Ocfs2 supports.\n"
         "Right now, this involves two tests.\n\n"
         "The first test makes sure that a truncate that's too large "
         "properly returns an error.\n\n"
         "The second test will attempt a small write which ends at the "
         "largest possible offset. The data is then read back in to "
         "ensure that it is coherent.\n\n"
         "blocksize bits and clustersize bits are required.\n"
         "This software will make a reasonable attempt at guessing page "
         "cache size, bits per long and whether large block device "
         "support is enabled. page_cache_size is the only one that can "
         "be completely trusted though.\n\n"
         "On 64 bit platforms with 32 bit userspace (ppc has this) "
         "bits_per_long should be forced to 64.\n"
         "CONFIG_LBD is just assumed to be enabled.\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 = [868 x i8] c"usage: check_file_size_limits [-B bits_per_long] [-P page_cache_size] [-L CONFIG_LBD] -b <blocksize bits> -c <clustersize bits> filename\0A\0ATests file I/O at the maximum offsets that Ocfs2 supports.\0ARight now, this involves two tests.\0A\0AThe first test makes sure that a truncate that's too large properly returns an error.\0A\0AThe second test will attempt a small write which ends at the largest possible offset. The data is then read back in to ensure that it is coherent.\0A\0Ablocksize bits and clustersize bits are required.\0AThis software will make a reasonable attempt at guessing page cache size, bits per long and whether large block device support is enabled. page_cache_size is the only one that can be completely trusted though.\0A\0AOn 64 bit platforms with 32 bit userspace (ppc has this) bits_per_long should be forced to 64.\0ACONFIG_LBD is just assumed to be enabled.\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([868 x i8], [868 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [867 x i8] c"usage: check_file_size_limits [-B bits_per_long] [-P page_cache_size] [-L CONFIG_LBD] -b <blocksize bits> -c <clustersize bits> filename\0A\0ATests file I/O at the maximum offsets that Ocfs2 supports.\0ARight now, this involves two tests.\0A\0AThe first test makes sure that a truncate that's too large properly returns an error.\0A\0AThe second test will attempt a small write which ends at the largest possible offset. The data is then read back in to ensure that it is coherent.\0A\0Ablocksize bits and clustersize bits are required.\0AThis software will make a reasonable attempt at guessing page cache size, bits per long and whether large block device support is enabled. page_cache_size is the only one that can be completely trusted though.\0A\0AOn 64 bit platforms with 32 bit userspace (ppc has this) bits_per_long should be forced to 64.\0ACONFIG_LBD is just assumed to be enabled.\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([867 x i8], [867 x i8]* @str, i64 0, i64 0))
ret void
}