Skip to content

Commit 250dd4d

Browse files
drmeisteryitzchak
authored andcommitted
Fixed llvm ABI changes
1 parent 54289fc commit 250dd4d

File tree

4 files changed

+43
-22
lines changed

4 files changed

+43
-22
lines changed

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,10 @@
156156
(when cleanup-p (llvm-sys:set-cleanup lpad t))
157157
(cmp:irc-store exception-structure *exn.slot*)
158158
(cmp:irc-store exception-selector *ehselector.slot*)
159-
(let* ((typeid (%intrinsic-call "llvm.eh.typeid.for"
160-
(list (cmp:irc-exception-typeid* 'cmp:typeid-core-unwind))))
159+
(let* ((typeid (%intrinsic-call
160+
#+(or llvm15 llvm16 llvm17)"llvm.eh.typeid.for"
161+
#-(or llvm15 llvm16 llvm17)"llvm.eh.typeid.for.p0"
162+
(list (cmp:irc-exception-typeid* 'cmp:typeid-core-unwind))))
161163
(matches-type (cmp:irc-icmp-eq exception-selector typeid)))
162164
;; If the exception is Clasp's Unwind exception, we handle it.
163165
;; Otherwise we go to the cleanup, or perhaps directly to the resume.
@@ -287,7 +289,10 @@
287289
(bb (cmp:irc-basic-block-create "escape-m-v-prog1")))
288290
(cmp:irc-begin-block bb)
289291
;; Lose the saved values alloca.
290-
(%intrinsic-call cmp:+llvm.stackrestore+ (list stackpos))
292+
(%intrinsic-call
293+
#+(or llvm15 llvm16 llvm17)"llvm.stackrestore"
294+
#-(or llvm15 llvm16 llvm17)"llvm.stackrestore.p0"
295+
(list stackpos))
291296
;; Continue
292297
(cmp:irc-br
293298
(maybe-entry-processor (cleavir-bir:parent instruction) tags))
@@ -300,7 +305,10 @@
300305
(let ((bb (cmp:irc-basic-block-create "escape-m-v-prog1")))
301306
(cmp:irc-begin-block bb)
302307
;; Lose the saved values alloca.
303-
(%intrinsic-call cmp:+llvm.stackrestore+ (list stackpos))
308+
(%intrinsic-call
309+
#+(or llvm15 llvm16 llvm17)"llvm.stackrestore"
310+
#-(or llvm15 llvm16 llvm17)"llvm.stackrestore.p0"
311+
(list stackpos))
304312
;; Continue
305313
(cmp:irc-br
306314
(maybe-entry-processor (cleavir-bir:parent inst) tags))

src/lisp/kernel/cleavir/translate.lisp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,10 @@
210210
(nvals (cmp:irc-tmv-nret tmv))
211211
(primary (cmp:irc-tmv-primary tmv))
212212
;; NOTE: Must be done BEFORE the alloca*fea.
213-
(save (%intrinsic-call cmp:+llvm.stacksave+ nil))
213+
(save (%intrinsic-call
214+
#+(or llvm15 llvm16 llvm17)"llvm.stacksave"
215+
#-(or llvm15 llvm16 llvm17)"llvm.stacksave.p0"
216+
nil))
214217
(mv-temp (cmp:alloca-temp-values nvals))
215218
(label (datum-name-as-string outp))
216219
(s2 (cmp::irc-make-vaslist nvals mv-temp label)))
@@ -232,12 +235,18 @@
232235
(%intrinsic-call "cc_set_dynenv_stack" (list old-de-stack)))))
233236
(defmethod undo-dynenv ((dynenv bir:values-save) tmv)
234237
(declare (ignore tmv))
235-
(%intrinsic-call cmp:+llvm.stackrestore+ (list (dynenv-storage dynenv))))
238+
(%intrinsic-call
239+
#+(or llvm15 llvm16 llvm17)"llvm.stackrestore"
240+
#-(or llvm15 llvm16 llvm17)"llvm.stackrestore.p0"
241+
(list (dynenv-storage dynenv))))
236242
(defmethod undo-dynenv ((dynenv bir:values-collect) tmv)
237243
(declare (ignore tmv))
238244
(let ((storage (dynenv-storage dynenv)))
239245
(when storage
240-
(%intrinsic-call cmp:+llvm.stackrestore+ (list storage)))))
246+
(%intrinsic-call
247+
#+(or llvm15 llvm16 llvm17)"llvm.stackrestore"
248+
#-(or llvm15 llvm16 llvm17)"llvm.stackrestore.p0"
249+
(list storage)))))
241250

242251
(defun translate-local-unwind (jump tmv)
243252
(loop with target = (bir:dynamic-environment
@@ -1519,7 +1528,10 @@
15191528
for n = size then (cmp:irc-add n size "sum-nret")
15201529
collect n))
15211530
(n-total-values (first (last partial-sums)))
1522-
(stacksave (%intrinsic-call cmp:+llvm.stacksave+ nil "values-collect"))
1531+
(stacksave (%intrinsic-call
1532+
#+(or llvm15 llvm16 llvm17)"llvm.stacksave"
1533+
#-(or llvm15 llvm16 llvm17)"llvm.stacksave.p0"
1534+
nil "values-collect"))
15231535
(tv-size
15241536
;; In order to store the primary value unconditionally below, we
15251537
;; need to allocate one extra word. This is important for the
@@ -1610,7 +1622,10 @@
16101622
in)
16111623
((eq irt :multiple-values)
16121624
(let* ((nret (cmp:irc-tmv-nret in))
1613-
(save (%intrinsic-call cmp:+llvm.stacksave+ nil))
1625+
(save (%intrinsic-call
1626+
#+(or llvm15 llvm16 llvm17)"llvm.stacksave"
1627+
#-(or llvm15 llvm16 llvm17)"llvm.stacksave.p0"
1628+
nil))
16141629
(values (cmp:alloca-temp-values nret)))
16151630
(setf (dynenv-storage inst) save)
16161631
(%intrinsic-call "cc_save_values"

src/lisp/kernel/cmp/cmpexports.lisp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@
3838
xep-group-entry-point-reference
3939
xep-group-cleavir-lambda-list-analysis
4040
+c++-stamp-max+
41-
+llvm.stacksave+
42-
+llvm.stackrestore+
4341
%opaque-fn-prototype*%
4442
fn-prototype
4543
*cleavir-compile-file-hook*

src/lisp/kernel/cmp/primitives.lisp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
(in-package #:cmp)
22

3-
(defvar +llvm.stacksave+
4-
#+(or llvm15 llvm16 llvm17)"llvm.stacksave"
5-
#-(or llvm15 llvm16 llvm17)"llvm.stacksave.p0")
6-
7-
(defvar +llvm.stackrestore+
8-
#+(or llvm15 llvm16 llvm17)"llvm.stackrestore"
9-
#-(or llvm15 llvm16 llvm17)"llvm.stackrestore.p0")
10-
113
(defstruct (primitive (:type vector) :named)
124
return-type-name
135
argument-type-names
@@ -132,7 +124,9 @@
132124
(primitive "__gxx_personality_v0" :i32 nil :varargs t)
133125
(primitive "__cxa_begin_catch" :i8* (list :i8*) )
134126
(primitive-unwinds "__cxa_end_catch" :void nil)
135-
(primitive "llvm.eh.typeid.for" :i32 (list :i8*))
127+
(primitive #+(or llvm15 llvm16 llvm17)"llvm.eh.typeid.for"
128+
#-(or llvm15 llvm16 llvm17)"llvm.eh.typeid.for.p0"
129+
:i32 (list :i8*))
136130
(primitive-unwinds "cc_overflowed_signed_bignum" :t* (list :i64))
137131
(primitive "llvm.sadd.with.overflow.i32" :{i32.i1} (list :i32 :i32))
138132
(primitive "llvm.sadd.with.overflow.i64" :{i64.i1} (list :i64 :i64))
@@ -196,8 +190,14 @@
196190
(primitive "llvm.lifetime.start" :void (list :i64 :i8*))
197191
(primitive "llvm.lifetime.end" :void (list :i64 :i8*))
198192

199-
(primitive +llvm.stacksave+ :i8* nil)
200-
(primitive +llvm.stackrestore+ :void (list :i8*))
193+
(primitive
194+
#+(or llvm15 llvm16 llvm17)"llvm.stacksave"
195+
#-(or llvm15 llvm16 llvm17)"llvm.stacksave.p0"
196+
:i8* nil)
197+
(primitive
198+
#+(or llvm15 llvm16 llvm17)"llvm.stackrestore"
199+
#-(or llvm15 llvm16 llvm17)"llvm.stackrestore.p0"
200+
:void (list :i8*))
201201

202202
(primitive "llvm.memcpy.p0.p0.i64" :void (list :i8* :i8* :i64 :i1))
203203
(primitive "llvm.memmove.p0.p0.i64" :void (list :i8* :i8* :i64 :i1))

0 commit comments

Comments
 (0)