llvmlite 0.44.0rc2__cp312-cp312-win_amd64.whl → 0.45.0rc1__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of llvmlite might be problematic. Click here for more details.

@@ -1,15 +1,11 @@
1
1
  import unittest
2
+ from collections import defaultdict
2
3
  from llvmlite import ir
3
4
  from llvmlite import binding as llvm
4
5
  from llvmlite.tests import TestCase
5
6
 
6
7
  import llvmlite.tests.refprune_proto as proto
7
8
 
8
- # TODO:: Get rid of Legacy tests once completely transitioned to NewPassManager
9
-
10
- # FIXME: Remove me once typed pointers are no longer supported.
11
- from llvmlite import opaque_pointers_enabled
12
-
13
9
 
14
10
  def _iterate_cases(generate_test):
15
11
  def wrap(fn):
@@ -136,16 +132,13 @@ class TestRefPrunePass(TestCase, PassManagerMixin):
136
132
  pm.run(mod, pb)
137
133
  return mod
138
134
 
139
- def apply_refprune_legacy(self, irmod):
140
- mod = llvm.parse_assembly(str(irmod))
141
- pm = llvm.ModulePassManager()
142
- pm.add_refprune_pass()
143
- pm.run(mod)
144
- return mod
145
-
146
135
  def check(self, mod, expected, nodes):
147
136
  # preprocess incref/decref locations
148
- d = {}
137
+
138
+ # LLVM >= 18 adds an extra empty block "LoopExit" which causes
139
+ # regular dict to throw KeyError
140
+ d = defaultdict(lambda: defaultdict(int))
141
+
149
142
  for k, vs in nodes.items():
150
143
  n_incref = vs.count('incref')
151
144
  n_decref = vs.count('decref')
@@ -160,6 +153,7 @@ class TestRefPrunePass(TestCase, PassManagerMixin):
160
153
  for f in mod.functions:
161
154
  if f.name == 'main':
162
155
  break
156
+
163
157
  # check each BB
164
158
  for bb in f.blocks:
165
159
  stats = d[bb.name]
@@ -175,19 +169,10 @@ class TestRefPrunePass(TestCase, PassManagerMixin):
175
169
  outmod = self.apply_refprune(irmod)
176
170
  self.check(outmod, expected, nodes)
177
171
 
178
- def generate_test_legacy(self, case_gen):
179
- nodes, edges, expected = case_gen()
180
- irmod = self.generate_ir(nodes, edges)
181
- outmod = self.apply_refprune_legacy(irmod)
182
- self.check(outmod, expected, nodes)
183
-
184
172
  # Generate tests
185
173
  for name, case in _iterate_cases(generate_test):
186
174
  locals()[name] = case
187
175
 
188
- for name, case in _iterate_cases(generate_test_legacy):
189
- locals()[name + "_legacy"] = case
190
-
191
176
 
192
177
  class BaseTestByIR(TestCase, PassManagerMixin):
193
178
  refprune_bitmask = 0
@@ -211,19 +196,6 @@ declare void @NRT_decref(i8* %ptr)
211
196
  after = llvm.dump_refprune_stats()
212
197
  return mod, after - before
213
198
 
214
- def check_legacy(self, irmod, subgraph_limit=None):
215
- mod = llvm.parse_assembly(f"{self.prologue}\n{irmod}")
216
- pm = llvm.ModulePassManager()
217
- if subgraph_limit is None:
218
- pm.add_refprune_pass(self.refprune_bitmask)
219
- else:
220
- pm.add_refprune_pass(self.refprune_bitmask,
221
- subgraph_limit=subgraph_limit)
222
- before = llvm.dump_refprune_stats()
223
- pm.run(mod)
224
- after = llvm.dump_refprune_stats()
225
- return mod, after - before
226
-
227
199
 
228
200
  class TestPerBB(BaseTestByIR):
229
201
  refprune_bitmask = llvm.RefPruneSubpasses.PER_BB
@@ -240,10 +212,6 @@ define void @main(i8* %ptr) {
240
212
  mod, stats = self.check(self.per_bb_ir_1)
241
213
  self.assertEqual(stats.basicblock, 2)
242
214
 
243
- def test_per_bb_1_legacy(self):
244
- mod, stats = self.check_legacy(self.per_bb_ir_1)
245
- self.assertEqual(stats.basicblock, 2)
246
-
247
215
  per_bb_ir_2 = r"""
248
216
  define void @main(i8* %ptr) {
249
217
  call void @NRT_incref(i8* %ptr)
@@ -259,21 +227,7 @@ define void @main(i8* %ptr) {
259
227
  mod, stats = self.check(self.per_bb_ir_2)
260
228
  self.assertEqual(stats.basicblock, 4)
261
229
  # not pruned
262
- # FIXME: Remove `else' once TP are no longer supported.
263
- if opaque_pointers_enabled:
264
- self.assertIn("call void @NRT_incref(ptr %ptr)", str(mod))
265
- else:
266
- self.assertIn("call void @NRT_incref(i8* %ptr)", str(mod))
267
-
268
- def test_per_bb_2_legacy(self):
269
- mod, stats = self.check_legacy(self.per_bb_ir_2)
270
- self.assertEqual(stats.basicblock, 4)
271
- # not pruned
272
- # FIXME: Remove `else' once TP are no longer supported.
273
- if opaque_pointers_enabled:
274
- self.assertIn("call void @NRT_incref(ptr %ptr)", str(mod))
275
- else:
276
- self.assertIn("call void @NRT_incref(i8* %ptr)", str(mod))
230
+ self.assertIn("call void @NRT_incref(ptr %ptr)", str(mod))
277
231
 
278
232
  per_bb_ir_3 = r"""
279
233
  define void @main(ptr %ptr, ptr %other) {
@@ -283,35 +237,13 @@ define void @main(ptr %ptr, ptr %other) {
283
237
  call void @NRT_decref(ptr %other)
284
238
  ret void
285
239
  }
286
- """ if opaque_pointers_enabled else r"""
287
- define void @main(i8* %ptr, i8* %other) {
288
- call void @NRT_incref(i8* %ptr)
289
- call void @NRT_incref(i8* %ptr)
290
- call void @NRT_decref(i8* %ptr)
291
- call void @NRT_decref(i8* %other)
292
- ret void
293
- }
294
240
  """
295
241
 
296
242
  def test_per_bb_3(self):
297
243
  mod, stats = self.check(self.per_bb_ir_3)
298
244
  self.assertEqual(stats.basicblock, 2)
299
245
  # not pruned
300
- # FIXME: Remove `else' once TP are no longer supported.
301
- if opaque_pointers_enabled:
302
- self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
303
- else:
304
- self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
305
-
306
- def test_per_bb_3_legacy(self):
307
- mod, stats = self.check_legacy(self.per_bb_ir_3)
308
- self.assertEqual(stats.basicblock, 2)
309
- # not pruned
310
- # FIXME: Remove `else' once TP are no longer supported.
311
- if opaque_pointers_enabled:
312
- self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
313
- else:
314
- self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
246
+ self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
315
247
 
316
248
  per_bb_ir_4 = r"""
317
249
  ; reordered
@@ -323,37 +255,13 @@ define void @main(ptr %ptr, ptr %other) {
323
255
  call void @NRT_incref(ptr %ptr)
324
256
  ret void
325
257
  }
326
- """ if opaque_pointers_enabled else r"""
327
- ; reordered
328
- define void @main(i8* %ptr, i8* %other) {
329
- call void @NRT_incref(i8* %ptr)
330
- call void @NRT_decref(i8* %ptr)
331
- call void @NRT_decref(i8* %ptr)
332
- call void @NRT_decref(i8* %other)
333
- call void @NRT_incref(i8* %ptr)
334
- ret void
335
- }
336
258
  """
337
259
 
338
260
  def test_per_bb_4(self):
339
261
  mod, stats = self.check(self.per_bb_ir_4)
340
262
  self.assertEqual(stats.basicblock, 4)
341
263
  # not pruned
342
- # FIXME: Remove `else' once TP are no longer supported.
343
- if opaque_pointers_enabled:
344
- self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
345
- else:
346
- self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
347
-
348
- def test_per_bb_4_legacy(self):
349
- mod, stats = self.check_legacy(self.per_bb_ir_4)
350
- self.assertEqual(stats.basicblock, 4)
351
- # not pruned
352
- # FIXME: Remove `else' once TP are no longer supported.
353
- if opaque_pointers_enabled:
354
- self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
355
- else:
356
- self.assertIn("call void @NRT_decref(i8* %other)", str(mod))
264
+ self.assertIn("call void @NRT_decref(ptr %other)", str(mod))
357
265
 
358
266
 
359
267
  class TestDiamond(BaseTestByIR):
@@ -374,10 +282,6 @@ bb_B:
374
282
  mod, stats = self.check(self.per_diamond_1)
375
283
  self.assertEqual(stats.diamond, 2)
376
284
 
377
- def test_per_diamond_1_legacy(self):
378
- mod, stats = self.check_legacy(self.per_diamond_1)
379
- self.assertEqual(stats.diamond, 2)
380
-
381
285
  per_diamond_2 = r"""
382
286
  define void @main(i8* %ptr, i1 %cond) {
383
287
  bb_A:
@@ -397,10 +301,6 @@ bb_D:
397
301
  mod, stats = self.check(self.per_diamond_2)
398
302
  self.assertEqual(stats.diamond, 2)
399
303
 
400
- def test_per_diamond_2_legacy(self):
401
- mod, stats = self.check_legacy(self.per_diamond_2)
402
- self.assertEqual(stats.diamond, 2)
403
-
404
304
  per_diamond_3 = r"""
405
305
  define void @main(i8* %ptr, i1 %cond) {
406
306
  bb_A:
@@ -421,10 +321,6 @@ bb_D:
421
321
  mod, stats = self.check(self.per_diamond_3)
422
322
  self.assertEqual(stats.diamond, 0)
423
323
 
424
- def test_per_diamond_3_legacy(self):
425
- mod, stats = self.check_legacy(self.per_diamond_3)
426
- self.assertEqual(stats.diamond, 0)
427
-
428
324
  per_diamond_4 = r"""
429
325
  define void @main(i8* %ptr, i1 %cond) {
430
326
  bb_A:
@@ -445,10 +341,6 @@ bb_D:
445
341
  mod, stats = self.check(self.per_diamond_4)
446
342
  self.assertEqual(stats.diamond, 2)
447
343
 
448
- def test_per_diamond_4_legacy(self):
449
- mod, stats = self.check_legacy(self.per_diamond_4)
450
- self.assertEqual(stats.diamond, 2)
451
-
452
344
  per_diamond_5 = r"""
453
345
  define void @main(i8* %ptr, i1 %cond) {
454
346
  bb_A:
@@ -470,10 +362,6 @@ bb_D:
470
362
  mod, stats = self.check(self.per_diamond_5)
471
363
  self.assertEqual(stats.diamond, 4)
472
364
 
473
- def test_per_diamond_5_legacy(self):
474
- mod, stats = self.check_legacy(self.per_diamond_5)
475
- self.assertEqual(stats.diamond, 4)
476
-
477
365
 
478
366
  class TestFanout(BaseTestByIR):
479
367
  """More complex cases are tested in TestRefPrunePass
@@ -499,10 +387,6 @@ bb_C:
499
387
  mod, stats = self.check(self.fanout_1)
500
388
  self.assertEqual(stats.fanout, 3)
501
389
 
502
- def test_fanout_1_legacy(self):
503
- mod, stats = self.check_legacy(self.fanout_1)
504
- self.assertEqual(stats.fanout, 3)
505
-
506
390
  fanout_2 = r"""
507
391
  define void @main(i8* %ptr, i1 %cond, i8** %excinfo) {
508
392
  bb_A:
@@ -521,10 +405,6 @@ bb_C:
521
405
  mod, stats = self.check(self.fanout_2)
522
406
  self.assertEqual(stats.fanout, 0)
523
407
 
524
- def test_fanout_2_legacy(self):
525
- mod, stats = self.check_legacy(self.fanout_2)
526
- self.assertEqual(stats.fanout, 0)
527
-
528
408
  fanout_3 = r"""
529
409
  define void @main(i8* %ptr, i1 %cond) {
530
410
  bb_A:
@@ -553,16 +433,6 @@ bb_C:
553
433
  mod, stats = self.check(self.fanout_3, subgraph_limit=1)
554
434
  self.assertEqual(stats.fanout, 0)
555
435
 
556
- def test_fanout_3_legacy(self):
557
- mod, stats = self.check_legacy(self.fanout_3)
558
- self.assertEqual(stats.fanout, 6)
559
-
560
- def test_fanout_3_limited_legacy(self):
561
- # With subgraph limit at 1, it is essentially turning off the fanout
562
- # pruner.
563
- mod, stats = self.check_legacy(self.fanout_3, subgraph_limit=1)
564
- self.assertEqual(stats.fanout, 0)
565
-
566
436
 
567
437
  class TestFanoutRaise(BaseTestByIR):
568
438
  refprune_bitmask = llvm.RefPruneSubpasses.FANOUT_RAISE
@@ -586,10 +456,6 @@ bb_C:
586
456
  mod, stats = self.check(self.fanout_raise_1)
587
457
  self.assertEqual(stats.fanout_raise, 2)
588
458
 
589
- def test_fanout_raise_1_legacy(self):
590
- mod, stats = self.check_legacy(self.fanout_raise_1)
591
- self.assertEqual(stats.fanout_raise, 2)
592
-
593
459
  fanout_raise_2 = r"""
594
460
  define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
595
461
  bb_A:
@@ -612,12 +478,6 @@ bb_C:
612
478
  mod, stats = self.check(self.fanout_raise_2)
613
479
  self.assertEqual(stats.fanout_raise, 0)
614
480
 
615
- def test_fanout_raise_2_legacy(self):
616
- # This is ensuring that fanout_raise is not pruning when the metadata
617
- # is incorrectly named.
618
- mod, stats = self.check_legacy(self.fanout_raise_2)
619
- self.assertEqual(stats.fanout_raise, 0)
620
-
621
481
  fanout_raise_3 = r"""
622
482
  define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
623
483
  bb_A:
@@ -638,10 +498,6 @@ bb_C:
638
498
  mod, stats = self.check(self.fanout_raise_3)
639
499
  self.assertEqual(stats.fanout_raise, 2)
640
500
 
641
- def test_fanout_raise_3_legacy(self):
642
- mod, stats = self.check_legacy(self.fanout_raise_3)
643
- self.assertEqual(stats.fanout_raise, 2)
644
-
645
501
  fanout_raise_4 = r"""
646
502
  define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
647
503
  bb_A:
@@ -660,10 +516,6 @@ bb_C:
660
516
  mod, stats = self.check(self.fanout_raise_4)
661
517
  self.assertEqual(stats.fanout_raise, 0)
662
518
 
663
- def test_fanout_raise_4_legacy(self):
664
- mod, stats = self.check_legacy(self.fanout_raise_4)
665
- self.assertEqual(stats.fanout_raise, 0)
666
-
667
519
  fanout_raise_5 = r"""
668
520
  define i32 @main(i8* %ptr, i1 %cond, i8** %excinfo) {
669
521
  bb_A:
@@ -686,10 +538,6 @@ common.ret:
686
538
  mod, stats = self.check(self.fanout_raise_5)
687
539
  self.assertEqual(stats.fanout_raise, 2)
688
540
 
689
- def test_fanout_raise_5_legacy(self):
690
- mod, stats = self.check_legacy(self.fanout_raise_5)
691
- self.assertEqual(stats.fanout_raise, 2)
692
-
693
541
  # test case 6 is from https://github.com/numba/llvmlite/issues/1023
694
542
  fanout_raise_6 = r"""
695
543
  define i32 @main(i8* %ptr, i1 %cond1, i1 %cond2, i1 %cond3, i8** %excinfo) {
@@ -721,10 +569,6 @@ bb_F:
721
569
  mod, stats = self.check(self.fanout_raise_6)
722
570
  self.assertEqual(stats.fanout_raise, 7)
723
571
 
724
- def test_fanout_raise_6_legacy(self):
725
- mod, stats = self.check_legacy(self.fanout_raise_6)
726
- self.assertEqual(stats.fanout_raise, 7)
727
-
728
572
 
729
573
  if __name__ == '__main__':
730
574
  unittest.main()
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: llvmlite
3
- Version: 0.44.0rc2
3
+ Version: 0.45.0rc1
4
4
  Summary: lightweight wrapper around basic LLVM functionality
5
5
  Home-page: http://llvmlite.readthedocs.io
6
6
  License: BSD
@@ -18,7 +18,14 @@ Classifier: Topic :: Software Development :: Code Generators
18
18
  Classifier: Topic :: Software Development :: Compilers
19
19
  Requires-Python: >=3.10
20
20
  License-File: LICENSE
21
- License-File: LICENSE.thirdparty
21
+ Dynamic: classifier
22
+ Dynamic: description
23
+ Dynamic: home-page
24
+ Dynamic: license
25
+ Dynamic: license-file
26
+ Dynamic: project-url
27
+ Dynamic: requires-python
28
+ Dynamic: summary
22
29
 
23
30
  ========
24
31
  llvmlite
@@ -27,9 +34,6 @@ llvmlite
27
34
  .. image:: https://dev.azure.com/numba/numba/_apis/build/status/numba.llvmlite?branchName=main
28
35
  :target: https://dev.azure.com/numba/numba/_build/latest?definitionId=2&branchName=main
29
36
  :alt: Azure Pipelines
30
- .. image:: https://codeclimate.com/github/numba/llvmlite/badges/gpa.svg
31
- :target: https://codeclimate.com/github/numba/llvmlite
32
- :alt: Code Climate
33
37
  .. image:: https://coveralls.io/repos/github/numba/llvmlite/badge.svg
34
38
  :target: https://coveralls.io/github/numba/llvmlite
35
39
  :alt: Coveralls.io
@@ -82,14 +86,15 @@ Compatibility
82
86
  llvmlite has been tested with Python 3.10 -- 3.13 and is likely to work with
83
87
  greater versions.
84
88
 
85
- As of version 0.44.0, llvmlite requires LLVM 15.x.x on all architectures
89
+ As of version 0.45.0, llvmlite requires LLVM 20.x.x on all architectures
86
90
 
87
91
  Historical compatibility table:
88
92
 
89
93
  ================= ========================
90
94
  llvmlite versions compatible LLVM versions
91
95
  ================= ========================
92
- 0.44.0 - ...... 15.x.x
96
+ 0.45.0 - ...... 20.x.x
97
+ 0.44.0 15.x.x and 16.x.x
93
98
  0.41.0 - 0.43.0 14.x.x
94
99
  0.40.0 - 0.40.1 11.x.x and 14.x.x (12.x.x and 13.x.x untested but may work)
95
100
  0.37.0 - 0.39.1 11.x.x
@@ -0,0 +1,44 @@
1
+ llvmlite/__init__.py,sha256=KGsVVj0s_HsvwGt12MsNQ5ZQu2P2mwnl3cVtuDWEdYk,472
2
+ llvmlite/_version.py,sha256=t3aoXn0qnXv8SANsfWwcEG-0xMqBWE00N8wxsXX3ybk,432
3
+ llvmlite/utils.py,sha256=pjxZnAAR2kmKLUTyIEoHKVFt70rK9kQMgBp7x2KDBn0,724
4
+ llvmlite/binding/__init__.py,sha256=SXxrYAGLsx8oeAUK3VcZgq1_6GGUyAOWGU9d7R5FaZw,422
5
+ llvmlite/binding/analysis.py,sha256=9hzt_SNJNY-VUPIaOQcI3ZM0Ock2uLjzS8KNkkFZLQI,2322
6
+ llvmlite/binding/common.py,sha256=HK0ftE8o6i1_hLkwrpN73p6AFaDzOvPJ0KHte8ikCNk,776
7
+ llvmlite/binding/config.py,sha256=V6u_AEOcT1EfeFOOGbRRmroPcXKnOlPLwLJe_zvziVY,4616
8
+ llvmlite/binding/context.py,sha256=8nm0MDoenMO_f2uMlLNMVHfuFktt2BULK4dptebYC2s,706
9
+ llvmlite/binding/dylib.py,sha256=1yBZq1rcP-GDrHDyZkNMrEHAuD43yK3v_sQ_wQ2fAmE,1345
10
+ llvmlite/binding/executionengine.py,sha256=h8EdSkQQeNjzyBL5psNeOMeuyiAtPN_UHPssr1L-tPo,11352
11
+ llvmlite/binding/ffi.py,sha256=xvbeq3XE7hkCYtAtkpE-5OoGtj2Pac3WeQ3kTxwKCE4,12829
12
+ llvmlite/binding/initfini.py,sha256=IhAK8PYOzej5LXaeguRWJgo2LfLRa-OFeDvjadX0Qbs,2248
13
+ llvmlite/binding/linker.py,sha256=Pd3ePT5kBa7ZxUTApskS3zymsZ7uJ932QF88oRpbc2Y,509
14
+ llvmlite/binding/llvmlite.dll,sha256=DsE9pSVP6tIDMY0Gy3GFQQcwmWeb_cDeSNI9HMqIrUg,106614784
15
+ llvmlite/binding/module.py,sha256=05ig4UzCu8Vdcf1Uk2iFxlbDvYtMksNM4fER2P-0Kz8,11523
16
+ llvmlite/binding/newpassmanagers.py,sha256=P_FD2hvtUW1qY7TV_S-DSLzXd_BPb4oTA6uxC7-2T4w,35545
17
+ llvmlite/binding/object_file.py,sha256=4mj6EkKafX4ieGy-bSvU46sckYNFzLLWNhLSvkfnGeM,2746
18
+ llvmlite/binding/options.py,sha256=DTfM0Feim-maHwAc9C0Q4HHb8ootXlI3RtdzDX3-CKQ,526
19
+ llvmlite/binding/orcjit.py,sha256=eY0sxPJTBOv7Q1rUVMPTF2AEkeYrKzKJ8QbRzDuUx8Q,12198
20
+ llvmlite/binding/targets.py,sha256=p9IWKTkanZgCtfdDqKysEKszHwtoeEKrlS3Fbok90TQ,15831
21
+ llvmlite/binding/typeref.py,sha256=rB2EHU7NqK2qCHBqo1ZKdGgChe0gIOg_K8ZN4zY9bF0,8072
22
+ llvmlite/binding/value.py,sha256=sd-JGpW2RDg1g5TAELeJMNaRp_mQjDvhfxlExWBtggI,20109
23
+ llvmlite/ir/__init__.py,sha256=lQuvg8hwt1obBTWybIqlxCFtnIncDK1gHWcwpDH4tO0,269
24
+ llvmlite/ir/_utils.py,sha256=6EbPTTZ7lVyxxHIzIx7PV8Tjl-aUTewotGwesD_6xmY,2081
25
+ llvmlite/ir/builder.py,sha256=zPC5g1Hu3oEgAWBrchoq7BojAR8Xi9MP6EyOPYVKxGI,34748
26
+ llvmlite/ir/context.py,sha256=GB8Hm66vy9rkpENf_Psb90g4Tf20AzcbF4gvnAWN2j0,560
27
+ llvmlite/ir/instructions.py,sha256=HAmdrDyWgR947-GlLINFT-wf5ptFSpev2Z3RVlg-VeY,33973
28
+ llvmlite/ir/module.py,sha256=qpMbgQE7TRg135RKywmSUiYcAb-E6LbRwZBufR_fDBc,9728
29
+ llvmlite/ir/transforms.py,sha256=AS59PY8GaEUITpPMGJefuK_UUJxFHgPYZcok8HlZJaU,1616
30
+ llvmlite/ir/types.py,sha256=xT7A5Q8egLuyb9jMKmocGTcwOC47g4L-D2CQuWXJBl8,20639
31
+ llvmlite/ir/values.py,sha256=5Ck6qpa0-xhisdFDkmfIPwjSANEJP0ecQ0IgfPU2bkI,35240
32
+ llvmlite/tests/__init__.py,sha256=bjwcCUkizqVJEjD0YGSfXc5KA99tFI-6NK78Mr-zRrU,1435
33
+ llvmlite/tests/__main__.py,sha256=akCE3R4XPkV3ywVk4LsKMplMU_u8MmK15bVnYRVJFfI,43
34
+ llvmlite/tests/customize.py,sha256=TWOCtgBTa57uCogdEOnWsX-jKKssTbWAItET3-9INTs,13675
35
+ llvmlite/tests/refprune_proto.py,sha256=Necn5IhP11cGIstO1h3hGu1ZpabCG3CUCK31tcWx-kg,9032
36
+ llvmlite/tests/test_binding.py,sha256=8bBKDejuE6z0z4iOJwuS-jaxk4h7rLSzP6dcu339N-I,115400
37
+ llvmlite/tests/test_ir.py,sha256=l9jafE-CNWcSPhxonShqora01w6Og5Nwv75cEDkv1ic,125494
38
+ llvmlite/tests/test_refprune.py,sha256=LaEeU69Z_t6hH3JN08MpIrmVRveYphwGfqbl6dACRMA,16234
39
+ llvmlite/tests/test_valuerepr.py,sha256=uSEyNSVuo2JFZDL7QARFgsbKiNzgR2HFALcwK6yXSGc,2049
40
+ llvmlite-0.45.0rc1.dist-info/licenses/LICENSE,sha256=8z_CZxFReVSrz6WQQ-4H0BpmI7ZhwdJsxpsJM85P-5g,1322
41
+ llvmlite-0.45.0rc1.dist-info/METADATA,sha256=KIdZGQf3cXYC4StsCmRca8tZyuS8COYLdWHI2L1sxpI,4974
42
+ llvmlite-0.45.0rc1.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
43
+ llvmlite-0.45.0rc1.dist-info/top_level.txt,sha256=WJi8Gq92jA2wv_aV1Oshp9iZ-zMa43Kcmw80kWeGYGA,9
44
+ llvmlite-0.45.0rc1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.44.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp312-cp312-win_amd64
5
5