<p dir="auto">When testing my packages with 1.7 (Windows 10), I get tons and tons of warnings similar to these:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="WARNING: Method definition Any(Integer, Static.StaticInt{1}, Integer) in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:261 overwritten on the same line (check for duplicate calls to `include`).                                                                                                              
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Static.StaticInt{1}, Static.StaticInt{L}) where {L} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:255 overwritten on the same line (check for duplicate calls to `include`).                                                                                        
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Static.StaticInt{S}, Integer) where {S} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:246 overwritten on the same line (check for duplicate calls to `include`).                                                                                                    
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Integer, Static.StaticInt{L}) where {L} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:243 overwritten on the same line (check for duplicate calls to `include`).                                                                                                    
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Static.StaticInt{S}, Static.StaticInt{L}) where {S, L} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:234 overwritten on the same line (check for duplicate calls to `include`).                                                                                     
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                      "><pre class="notranslate"><code class="notranslate">WARNING: Method definition Any(Integer, Static.StaticInt{1}, Integer) in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:261 overwritten on the same line (check for duplicate calls to `include`).                                                                                                              
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Static.StaticInt{1}, Static.StaticInt{L}) where {L} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:255 overwritten on the same line (check for duplicate calls to `include`).                                                                                        
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Static.StaticInt{S}, Integer) where {S} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:246 overwritten on the same line (check for duplicate calls to `include`).                                                                                                    
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Integer, Static.StaticInt{L}) where {L} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:243 overwritten on the same line (check for duplicate calls to `include`).                                                                                                    
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                                                                                                                                                                
WARNING: Method definition Any(Integer, Static.StaticInt{S}, Static.StaticInt{L}) where {S, L} in module ArrayInterface at C:\Users\PetrKrysl\.julia\packages\ArrayInterface\CYf5x\src\ranges.jl:234 overwritten on the same line (check for duplicate calls to `include`).                                                                                     
  ** incremental compilation may be fatally broken for this module **                                                                                                           
                                      
</code></pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; versioninfo()
Julia Version 1.7.0-beta2                                                                                                                                                       
Commit b570546b68 (2021-06-20 06:31 UTC)                                                                                                                                        
Platform Info:                                                                                                                                                                  
  OS: Windows (x86_64-w64-mingw32)                                                                                                                                              
  CPU: Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz                                                                                                                                 
  WORD_SIZE: 64                                                                                                                                                                 
  LIBM: libopenlibm                                                                                                                                                             
  LLVM: libLLVM-12.0.0 (ORCJIT, skylake)                                                                                                                                        
Environment:                                                                                                                                                                    
  JULIA_SSL_CA_ROOTS_PATH =     "><pre class="notranslate"><code class="notranslate">julia&gt; versioninfo()
Julia Version 1.7.0-beta2                                                                                                                                                       
Commit b570546b68 (2021-06-20 06:31 UTC)                                                                                                                                        
Platform Info:                                                                                                                                                                  
  OS: Windows (x86_64-w64-mingw32)                                                                                                                                              
  CPU: Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz                                                                                                                                 
  WORD_SIZE: 64                                                                                                                                                                 
  LIBM: libopenlibm                                                                                                                                                             
  LLVM: libLLVM-12.0.0 (ORCJIT, skylake)                                                                                                                                        
Environment:                                                                                                                                                                    
  JULIA_SSL_CA_ROOTS_PATH =     
</code></pre></div>
<p dir="auto">I am testing the C's <code class="notranslate">printf</code> via <code class="notranslate">ccall</code> in julia, however, the "%f" format did not work as expected.</p>
<div class="highlight highlight-source-julia notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="foo(x) = ccall(:printf, Cint, (Cstring, Cfloat), &quot;%f\n&quot;, x) # helper function
foo(12.3) =&gt; 0.000000"><pre class="notranslate"><span class="pl-en">foo</span>(x) <span class="pl-k">=</span> <span class="pl-c1">ccall</span>(<span class="pl-c1">:printf</span>, Cint, (Cstring, Cfloat), <span class="pl-s"><span class="pl-pds">"</span>%f<span class="pl-cce">\n</span><span class="pl-pds">"</span></span>, x) <span class="pl-c"><span class="pl-c">#</span> helper function</span>
<span class="pl-c1">foo</span>(<span class="pl-c1">12.3</span>) <span class="pl-k">=&gt;</span> <span class="pl-c1">0.000000</span></pre></div>
<p dir="auto">The output is "0.000000" on x64 windows and arm64 linux, but not on x64 linux.<br>
Poring through <code class="notranslate">@code_llvm</code>, printf is called as:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="%17 = call i32 inttoptr (i64 140719310539600 to i32 (i64, float)*)(i64 441151672, float %16)"><pre class="notranslate"><code class="notranslate">%17 = call i32 inttoptr (i64 140719310539600 to i32 (i64, float)*)(i64 441151672, float %16)
</code></pre></div>
<p dir="auto">but printf is called as below if I use <code class="notranslate">clang -o - -S -emit-llvm</code> (on arm64 linux and x64 linux):</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), double 1.230000e+01)"><pre class="notranslate"><code class="notranslate">%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), double 1.230000e+01)
</code></pre></div>
<p dir="auto">I have not figured out how vararg is passed on arm64, but <a href="https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-160#varargs" rel="nofollow">Microsoft document on x64 calling convention</a> says that vararg floating-point argument must be duplicated in both integer and floating-point registers, which I guess is the reason why "0.00000" is printed.</p>