#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() {
  printf(
      "Usage:  cdep [option | filename]...\n"
      "\n"
      "Filenames specify source files to scan for dependencies.\n"
      "\n"
      "Options:\n"
      "    -M         : Output dependency lines in 'make' format.\n"
      "    -M+        : Like -M, but includes an additional empty dependency\n"
      "                 line for each included file.  This allows 'make' to\n"
      "                 proceed when the included file does not exist (which\n"
      "                 can occur when dependency files are stale).\n"
      "    -1         : Output simple list of included files.\n"
      "    -S<d><f>   : Output statistics.  <d> and <f> are optional.\n"
      "                 Characters in <f> denote fields:\n"
      "                    'F' = source file name\n"
      "                    'B' = source file size in bytes\n"
      "                    'L' = source file size in lines\n"
      "                    'S' = source file score (lines not blank or "
      "comments)\n"
      "                    'n' = number of included files\n"
      "                    'b' = total bytes in included files\n"
      "                    'l' = total lines in included files\n"
      "                    's' = total score for included files\n"
      "                 Default for <f> is 'FBLnbls'.  <d> is a "
      "non-alphanumeric\n"
      "                 separator character; default is space.\n"
      "\n"
      "    -I<dir>    : Add <dir> to include search path.\n"
      "    -I <dir>   : Same as -I<dir>.\n"
      "    -o <obj>   : Specify name for object file (LHS of dependency "
      "line).\n"
      "    -o <dir/>  : A trailing slash specifies a directory for objects.\n"
      "                 Object names are contructed from source names by\n"
      "                 replacing the extension with '.o'.\n"
      "    -f <file>  : Read file names or -I<dir> directives from <file>.\n"
      "    -i <incs>  : Read list of include directories from <incs>.\n"
      "    -w         : Show warnings.\n"
      "    -n         : Do not recurse into included files.\n"
      "    -s         : Strip path from source/object file name in output.\n"
      "    -x...      : Diagnostic switches (see source code).\n"
      "\n"
      "Default output mode = -M+\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 = [1885 x i8] c"Usage: cdep [option | filename]...\0A\0AFilenames specify source files to scan for dependencies.\0A\0AOptions:\0A -M : Output dependency lines in 'make' format.\0A -M+ : Like -M, but includes an additional empty dependency\0A line for each included file. This allows 'make' to\0A proceed when the included file does not exist (which\0A can occur when dependency files are stale).\0A -1 : Output simple list of included files.\0A -S<d><f> : Output statistics. <d> and <f> are optional.\0A Characters in <f> denote fields:\0A 'F' = source file name\0A 'B' = source file size in bytes\0A 'L' = source file size in lines\0A 'S' = source file score (lines not blank or comments)\0A 'n' = number of included files\0A 'b' = total bytes in included files\0A 'l' = total lines in included files\0A 's' = total score for included files\0A Default for <f> is 'FBLnbls'. <d> is a non-alphanumeric\0A separator character; default is space.\0A\0A -I<dir> : Add <dir> to include search path.\0A -I <dir> : Same as -I<dir>.\0A -o <obj> : Specify name for object file (LHS of dependency line).\0A -o <dir/> : A trailing slash specifies a directory for objects.\0A Object names are contructed from source names by\0A replacing the extension with '.o'.\0A -f <file> : Read file names or -I<dir> directives from <file>.\0A -i <incs> : Read list of include directories from <incs>.\0A -w : Show warnings.\0A -n : Do not recurse into included files.\0A -s : Strip path from source/object file name in output.\0A -x... : Diagnostic switches (see source code).\0A\0ADefault output mode = -M+\0A\00"
define void @Usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1885 x i8], [1885 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1884 x i8] c"Usage: cdep [option | filename]...\0A\0AFilenames specify source files to scan for dependencies.\0A\0AOptions:\0A -M : Output dependency lines in 'make' format.\0A -M+ : Like -M, but includes an additional empty dependency\0A line for each included file. This allows 'make' to\0A proceed when the included file does not exist (which\0A can occur when dependency files are stale).\0A -1 : Output simple list of included files.\0A -S<d><f> : Output statistics. <d> and <f> are optional.\0A Characters in <f> denote fields:\0A 'F' = source file name\0A 'B' = source file size in bytes\0A 'L' = source file size in lines\0A 'S' = source file score (lines not blank or comments)\0A 'n' = number of included files\0A 'b' = total bytes in included files\0A 'l' = total lines in included files\0A 's' = total score for included files\0A Default for <f> is 'FBLnbls'. <d> is a non-alphanumeric\0A separator character; default is space.\0A\0A -I<dir> : Add <dir> to include search path.\0A -I <dir> : Same as -I<dir>.\0A -o <obj> : Specify name for object file (LHS of dependency line).\0A -o <dir/> : A trailing slash specifies a directory for objects.\0A Object names are contructed from source names by\0A replacing the extension with '.o'.\0A -f <file> : Read file names or -I<dir> directives from <file>.\0A -i <incs> : Read list of include directories from <incs>.\0A -w : Show warnings.\0A -n : Do not recurse into included files.\0A -s : Strip path from source/object file name in output.\0A -x... : Diagnostic switches (see source code).\0A\0ADefault output mode = -M+\00"
define void @Usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1884 x i8], [1884 x i8]* @str, i64 0, i64 0))
ret void
}