int juliam(yr, mo, dy, hr, mn)
short *yr, *mo, *dy, *hr, *mn;
{
  int yy, mm, dd, hh, nn;
  yy = *yr;
  mm = *mo;
  dd = *dy;
  hh = *hr;
  nn = *mn;
  return (juliam4(&yy, &mm, &dd, &hh, &nn));
}


x86 assembly (clang, -O0):
<juliam>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movswl (%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movswl (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movswl (%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%rax
movswl (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
movswl (%rax),%eax
mov    %eax,-0x3c(%rbp)
lea    -0x2c(%rbp),%rdi
lea    -0x30(%rbp),%rsi
lea    -0x34(%rbp),%rdx
lea    -0x38(%rbp),%rcx
lea    -0x3c(%rbp),%r8
mov    $0x0,%al
call   1030 <juliam4@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<juliam>:
sub    $0x18,%rsp
movswl (%rdi),%eax
mov    %eax,0x14(%rsp)
movswl (%rsi),%eax
mov    %eax,0x10(%rsp)
movswl (%rdx),%eax
mov    %eax,0xc(%rsp)
movswl (%rcx),%eax
mov    %eax,0x8(%rsp)
movswl (%r8),%eax
mov    %eax,0x4(%rsp)
lea    0x14(%rsp),%rdi
lea    0x10(%rsp),%rsi
lea    0xc(%rsp),%rdx
lea    0x8(%rsp),%rcx
lea    0x4(%rsp),%r8
xor    %eax,%eax
call   1030 <juliam4@plt>
add    $0x18,%rsp
ret

LLVM IR (-O0):
define i32 @juliam(i16* %0, i16* %1, i16* %2, i16* %3, i16* %4) {
%6 = alloca i16*
%7 = alloca i16*
%8 = alloca i16*
%9 = alloca i16*
%10 = alloca i16*
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
store i16* %0, i16** %6
store i16* %1, i16** %7
store i16* %2, i16** %8
store i16* %3, i16** %9
store i16* %4, i16** %10
%16 = load i16*, i16** %6
%17 = load i16, i16* %16
%18 = sext i16 %17 to i32
store i32 %18, i32* %11
%19 = load i16*, i16** %7
%20 = load i16, i16* %19
%21 = sext i16 %20 to i32
store i32 %21, i32* %12
%22 = load i16*, i16** %8
%23 = load i16, i16* %22
%24 = sext i16 %23 to i32
store i32 %24, i32* %13
%25 = load i16*, i16** %9
%26 = load i16, i16* %25
%27 = sext i16 %26 to i32
store i32 %27, i32* %14
%28 = load i16*, i16** %10
%29 = load i16, i16* %28
%30 = sext i16 %29 to i32
store i32 %30, i32* %15
%31 = call i32 (i32*, i32*, i32*, i32*, i32*, ...) bitcast (i32 (...)* @juliam4 to i32 (i32*, i32*, i32*, i32*, i32*, ...)*)(i32* %11, i32* %12, i32* %13, i32* %14, i32* %15)
ret i32 %31
}

LLVM IR (-O2):
define i32 @juliam(i16* nocapture %0, i16* nocapture %1, i16* nocapture %2, i16* nocapture %3, i16* nocapture %4) {
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = bitcast i32* %6 to i8*
%12 = bitcast i32* %7 to i8*
%13 = bitcast i32* %8 to i8*
%14 = bitcast i32* %9 to i8*
%15 = bitcast i32* %10 to i8*
%16 = load i16, i16* %0
%17 = sext i16 %16 to i32
store i32 %17, i32* %6
%18 = load i16, i16* %1
%19 = sext i16 %18 to i32
store i32 %19, i32* %7
%20 = load i16, i16* %2
%21 = sext i16 %20 to i32
store i32 %21, i32* %8
%22 = load i16, i16* %3
%23 = sext i16 %22 to i32
store i32 %23, i32* %9
%24 = load i16, i16* %4
%25 = sext i16 %24 to i32
store i32 %25, i32* %10
%26 = call i32 (i32*, i32*, i32*, i32*, i32*, ...) bitcast (i32 (...)* @juliam4 to i32 (i32*, i32*, i32*, i32*, i32*, ...)*)(i32* %6, i32* %7, i32* %8, i32* %9, i32* %10)
ret i32 %26
}