> On Sep 28, 2017, at 2:16 PM, Sam Ding via swift-dev <swift-dev@swift.org> 
> wrote:
> 
> I am testing a test case "KeyPath.swift" on s390x for v4.0 . It is found that 
> " Builtin.loadRaw" as the below of 
> "stdlib/public/core/UnsafeRawPointer.swift.gyb" returns a different value 
> than that on x86-64. 
> @_inlineable
> public func load<T>(fromByteOffset offset: Int = 0, as type: T.Type) -> T {
> _debugPrecondition(0 == (UInt(bitPattern: self + offset)
> & (UInt(MemoryLayout<T>.alignment) - 1)),
> "load from misaligned raw pointer")
> 
> return Builtin.loadRaw((self + offset)._rawValue) // return a different value 
> on s390x vs x86-64
> }
> My debugger (lldb) does not guide me to the detailed of " Builtin.loadRaw". 
> Searching "loadRaw" and finding
> swift/include/swift/AST/Builtins.def:BUILTIN_SIL_OPERATION(LoadRaw, 
> "loadRaw", Special)
> 
> But I could not find the definition of this "LoadRaw" from the whole swift v4.
> Can anyone give me a hint where its implementation is?

Builtins don't have any definition in Swift; they're lowered directly by the 
compiler. UnsafeRawPointer.load loads a value from memory at the address 
referenced by the pointer's value. The pointer may be getting miscalculated 
because of layout assumptions that hold on other platforms but not s390x.

-Joe
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to