Skip to content

Commit 06fa238

Browse files
authored
Merge pull request #1434 from clasp-developers/llvm15-fixes
Llvm15 fixes
2 parents 95e8ced + 45cfb21 commit 06fa238

File tree

4 files changed

+17
-13
lines changed

4 files changed

+17
-13
lines changed

src/lisp/kernel/cleavir/landing-pad.lisp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140

141141
(defmethod dynenv-frame ((dynenv bir:dynamic-environment))
142142
;; default: just grab the frame pointer
143-
(%intrinsic-call "llvm.frameaddress.p0i8" (list (%i32 0))
143+
(%intrinsic-call "llvm.frameaddress.p0" (list (%i32 0))
144144
"frame"))
145145

146146
(defmethod dynenv-frame ((dynenv bir:come-from))

src/lisp/kernel/cleavir/translate.lisp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@
411411
come-from *clasp-system*))
412412
(frame
413413
(unless simplep
414-
(%intrinsic-call "llvm.frameaddress.p0i8"
414+
(%intrinsic-call "llvm.frameaddress.p0"
415415
(list (%i32 0)))))
416416
(normal-successor (first successors))
417417
(bufp (cmp:alloca cmp::%jmp-buf-tag% 1 "come-from-jmp-buf")))
@@ -613,7 +613,7 @@
613613
'insert-step-conditions)
614614
(let ((origin (bir:origin inst)))
615615
(when (typep origin 'cst:cst)
616-
(let* ((frame (%intrinsic-call "llvm.frameaddress.p0i8"
616+
(let* ((frame (%intrinsic-call "llvm.frameaddress.p0"
617617
(list (%i32 0)) "stepper-frame"))
618618
(raw (cst:raw origin))
619619
;; See #1376: Sometimes the source form will be a literal.
@@ -647,7 +647,7 @@
647647
;; so now we need to put in the cc_breakstep_after to support
648648
;; the step-over facility.
649649
(%intrinsic-call "cc_breakstep_after"
650-
(list (%intrinsic-call "llvm.frameaddress.p0i8"
650+
(list (%intrinsic-call "llvm.frameaddress.p0"
651651
(list (%i32 0))
652652
"stepper-frame")))))
653653

@@ -1555,7 +1555,7 @@
15551555
"adjusted-nret-variable"))
15561556
(ncopy (cmp:irc-sub adjusted-nvalues (%size_t 1) "ntocopy")))
15571557
;; Copy the rest
1558-
(%intrinsic-call "llvm.memcpy.p0i8.p0i8.i64"
1558+
(%intrinsic-call "llvm.memcpy.p0.p0.i64"
15591559
(list (cmp:irc-bit-cast dest cmp:%i8*%
15601560
"var-dest-subsequent")
15611561
;; read from the 1st value of the mv vector
@@ -1576,7 +1576,7 @@
15761576
for dest = (cmp:irc-typed-gep-variable cmp:%t*% valvec (list startn) "dest")
15771577
do (ecase key
15781578
((:saved)
1579-
(%intrinsic-call "llvm.memcpy.p0i8.p0i8.i64"
1579+
(%intrinsic-call "llvm.memcpy.p0.p0.i64"
15801580
(list (cmp:irc-bit-cast dest cmp:%i8*% "dest")
15811581
(cmp:irc-bit-cast extra cmp:%i8*%
15821582
"source")
@@ -1884,11 +1884,14 @@
18841884
#+(or)(llvm-sys:set-calling-conv the-function 'llvm-sys:fastcc)
18851885
(llvm-sys:set-personality-fn the-function
18861886
(cmp:irc-personality-function))
1887-
(llvm-sys:add-fn-attr the-function 'llvm-sys:attribute-uwtable)
1887+
;; we'd like to be able to be interruptable at any time, so we
1888+
;; need async-safe unwinding tables basically everywhere.
1889+
;; (Although in code that ignores interrupts we could loosen this.)
1890+
(llvm-sys:add-fn-attr2string the-function "uwtable" "async")
18881891
(when (null (bir:returni function))
18891892
(llvm-sys:add-fn-attr the-function 'llvm-sys:attribute-no-return))
18901893
(unless (policy:policy-value (bir:policy function)
1891-
'perform-optimization)
1894+
'perform-optimization)
18921895
(llvm-sys:add-fn-attr the-function 'llvm-sys:attribute-no-inline)
18931896
(llvm-sys:add-fn-attr the-function 'llvm-sys:attribute-optimize-none))
18941897
(cmp:with-irbuilder (body-irbuilder)
@@ -1945,7 +1948,8 @@
19451948
:function xep-arity-function)
19461949
(llvm-sys:set-personality-fn xep-arity-function
19471950
(cmp:irc-personality-function))
1948-
(llvm-sys:add-fn-attr xep-arity-function 'llvm-sys:attribute-uwtable)
1951+
(llvm-sys:add-fn-attr2string xep-arity-function
1952+
"uwtable" "async")
19491953
(when (null (bir:returni function))
19501954
(llvm-sys:add-fn-attr xep-arity-function
19511955
'llvm-sys:attribute-no-return))

src/lisp/kernel/cmp/cmpir.lisp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -938,7 +938,7 @@ Otherwise do a variable shift."
938938
(irc-make-vaslist new-nvals new-vals label)))
939939

940940
(defparameter *default-function-attributes*
941-
'(llvm-sys:attribute-uwtable ("frame-pointer" "all")))
941+
'(("uwtable" "async") ("frame-pointer" "all")))
942942

943943
(defun function-description-name (function)
944944
(let ((function-name (llvm-sys:get-name function)))

src/lisp/kernel/cmp/primitives.lisp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@
192192
(primitive "llvm.stacksave" :i8* nil)
193193
(primitive "llvm.stackrestore" :void (list :i8*))
194194

195-
(primitive "llvm.memcpy.p0i8.p0i8.i64" :void (list :i8* :i8* :i64 :i1))
196-
(primitive "llvm.memmove.p0i8.p0i8.i64" :void (list :i8* :i8* :i64 :i1))
195+
(primitive "llvm.memcpy.p0.p0.i64" :void (list :i8* :i8* :i64 :i1))
196+
(primitive "llvm.memmove.p0.p0.i64" :void (list :i8* :i8* :i64 :i1))
197197

198198
(primitive "saveToMultipleValue0" :void (list :tmv*))
199199
(primitive "restoreFromMultipleValue0" :return-type nil)
@@ -272,7 +272,7 @@
272272
(primitive-unwinds "cc_sjlj_continue_unwinding" :void nil :does-not-return t)
273273
(primitive "cc_saveMultipleValue0" :void (list :tmv))
274274
(primitive "cc_restoreMultipleValue0" :return-type nil)
275-
(primitive "llvm.frameaddress.p0i8" :i8* (list :i32))
275+
(primitive "llvm.frameaddress.p0" :i8* (list :i32))
276276
(primitive-unwinds "cc_landingpadUnwindMatchFrameElseRethrow" :size_t (list :i8* :i8*))
277277

278278
;; Compiler translators (calls generated by Cleavir)

0 commit comments

Comments
 (0)