Even though it's apparently only loading the lower 32-bits using edi, it does seem like it does get sign-extended to 64-bits.

Code:
Breakpoint 1, main () at bar.c:13
13	    char *name = malloc(NAME_LENGTH);
=> 0x0000555555555291 <main+12>:	bf 1e 00 00 00	mov    $0x1e,%edi
   0x0000555555555296 <main+17>:	e8 85 fe ff ff	call   0x555555555120 <malloc@plt>
   0x000055555555529b <main+22>:	48 89 45 f0	mov    %rax,-0x10(%rbp)
(gdb) info registers 
rax            0x555555555285      93824992236165
rbx            0x0                 0
rcx            0x555555557d80      93824992247168
rdx            0x7fffffffdf18      140737488346904
rsi            0x7fffffffdf08      140737488346888
rdi            0x1                 1
(gdb) set $rdi = 0xffffffffffff
(gdb) info registers 
rax            0x555555555285      93824992236165
rbx            0x0                 0
rcx            0x555555557d80      93824992247168
rdx            0x7fffffffdf18      140737488346904
rsi            0x7fffffffdf08      140737488346888
rdi            0xffffffffffff      281474976710655
(gdb) si
0x0000555555555296	13	    char *name = malloc(NAME_LENGTH);
   0x0000555555555291 <main+12>:	bf 1e 00 00 00	mov    $0x1e,%edi
=> 0x0000555555555296 <main+17>:	e8 85 fe ff ff	call   0x555555555120 <malloc@plt>
   0x000055555555529b <main+22>:	48 89 45 f0	mov    %rax,-0x10(%rbp)
(gdb) info registers 
rax            0x555555555285      93824992236165
rbx            0x0                 0
rcx            0x555555557d80      93824992247168
rdx            0x7fffffffdf18      140737488346904
rsi            0x7fffffffdf08      140737488346888
rdi            0x1e                30
Despite deliberately clobbering the upper word of rdi, it still got cleared to zero by the 32-bit mov to edi.