[swift-dev] [Compiler] Help IR gen in targetting MSVC

Sangjin Han tinysun.net at gmail.com
Mon Apr 25 21:54:15 CDT 2016


Hi all,

I found a bug in my port for MSVC and Cygwin.

The C function swift_stdlib_readLine_stdin() is mapped to 'Int' type in
Swift, but it generates i32 in LLVM if I specify the target as MSVC. If I
give the target as Cygwin, it generates i64.

With the target options, the Cygwin ported swiftc.exe has the same output.

I know that the one of the differences between MSVC and Cygwin is the size
of 'long' type. But I don't know even if it is related to this problem.

I don't know where to I start with.

BEGIN OF tt.swift ---
import SwiftShims

 var linePtr: UnsafeMutablePointer<CChar>? = nil
 var readBytes = swift_stdlib_readLine_stdin(&linePtr)
 print(readBytes)
END OF tt.swift -----

C:\temp>swiftc -emit-ir tt.swift -target x86_64-pc-windows-msvc  | findstr
stdlib
  %4 = call i32 @swift_stdlib_readLine_stdin(i8** bitcast (%Sq*
@_Tv2tt7linePtrGSqGSpVs4Int8__ to i8**))
declare i32 @swift_stdlib_readLine_stdin(i8**) #0

C:\temp>swiftc -emit-ir tt.swift -target x86_64-unknown-windows-cygnus |
findstr stdlib
  %4 = call i64 @swift_stdlib_readLine_stdin(i8** bitcast (%Sq*
@_Tv2tt7linePtrGSqGSpVs4Int8__ to i8**))
declare i64 @swift_stdlib_readLine_stdin(i8**) #0


- Han Sangjin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160426/157778a0/attachment.html>


More information about the swift-dev mailing list