cleanup (#11192)
This commit is contained in:
parent
6f7f043c9b
commit
425baeaec6
2 changed files with 3 additions and 9 deletions
|
|
@ -718,14 +718,10 @@ proc isCppRef(p: BProc; typ: PType): bool {.inline.} =
|
||||||
tfVarIsPtr notin skipTypes(typ, abstractInstOwned).flags
|
tfVarIsPtr notin skipTypes(typ, abstractInstOwned).flags
|
||||||
|
|
||||||
proc genDeref(p: BProc, e: PNode, d: var TLoc) =
|
proc genDeref(p: BProc, e: PNode, d: var TLoc) =
|
||||||
let
|
let mt = mapType(p.config, e.sons[0].typ)
|
||||||
enforceDeref = lfEnforceDeref in d.flags
|
if mt in {ctArray, ctPtrToArray} and lfEnforceDeref notin d.flags:
|
||||||
mt = mapType(p.config, e.sons[0].typ)
|
|
||||||
if mt in {ctArray, ctPtrToArray} and not enforceDeref:
|
|
||||||
# XXX the amount of hacks for C's arrays is incredible, maybe we should
|
# XXX the amount of hacks for C's arrays is incredible, maybe we should
|
||||||
# simply wrap them in a struct? --> Losing auto vectorization then?
|
# simply wrap them in a struct? --> Losing auto vectorization then?
|
||||||
#if e[0].kind != nkBracketExpr:
|
|
||||||
# message(e.info, warnUser, "CAME HERE " & renderTree(e))
|
|
||||||
expr(p, e.sons[0], d)
|
expr(p, e.sons[0], d)
|
||||||
if e.sons[0].typ.skipTypes(abstractInstOwned).kind == tyRef:
|
if e.sons[0].typ.skipTypes(abstractInstOwned).kind == tyRef:
|
||||||
d.storage = OnHeap
|
d.storage = OnHeap
|
||||||
|
|
@ -762,7 +758,7 @@ proc genDeref(p: BProc, e: PNode, d: var TLoc) =
|
||||||
e.kind == nkHiddenDeref:
|
e.kind == nkHiddenDeref:
|
||||||
putIntoDest(p, d, e, rdLoc(a), a.storage)
|
putIntoDest(p, d, e, rdLoc(a), a.storage)
|
||||||
return
|
return
|
||||||
if enforceDeref and mt == ctPtrToArray:
|
if mt == ctPtrToArray and lfEnforceDeref in d.flags:
|
||||||
# we lie about the type for better C interop: 'ptr array[3,T]' is
|
# we lie about the type for better C interop: 'ptr array[3,T]' is
|
||||||
# translated to 'ptr T', but for deref'ing this produces wrong code.
|
# translated to 'ptr T', but for deref'ing this produces wrong code.
|
||||||
# See tmissingderef. So we get rid of the deref instead. The codegen
|
# See tmissingderef. So we get rid of the deref instead. The codegen
|
||||||
|
|
|
||||||
|
|
@ -123,8 +123,6 @@ proc genVarTuple(p: BProc, n: PNode) =
|
||||||
if forHcr or isGlobalInBlock:
|
if forHcr or isGlobalInBlock:
|
||||||
hcrGlobals.add((loc: v.loc, tp: if traverseProc == nil: ~"NULL" else: traverseProc))
|
hcrGlobals.add((loc: v.loc, tp: if traverseProc == nil: ~"NULL" else: traverseProc))
|
||||||
|
|
||||||
proc genDeref(p: BProc, e: PNode, d: var TLoc)
|
|
||||||
|
|
||||||
proc loadInto(p: BProc, le, ri: PNode, a: var TLoc) {.inline.} =
|
proc loadInto(p: BProc, le, ri: PNode, a: var TLoc) {.inline.} =
|
||||||
if ri.kind in nkCallKinds and (ri.sons[0].kind != nkSym or
|
if ri.kind in nkCallKinds and (ri.sons[0].kind != nkSym or
|
||||||
ri.sons[0].sym.magic == mNone):
|
ri.sons[0].sym.magic == mNone):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue