diff --git a/LICENSE.txt b/LICENSE.txt
index 39155115f..2dd05e102 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -2,7 +2,7 @@
ILGPU License
********************************************************************************
University of Illinois/NCSA Open Source License
-Copyright (c) 2016-2023 ILGPU Project
+Copyright (c) 2016-2024 ILGPU Project
All rights reserved.
Developed by: Marcel Koester (m4rs@m4rs.net)
diff --git a/README.md b/README.md
index f9da8e467..035388286 100644
--- a/README.md
+++ b/README.md
@@ -106,7 +106,7 @@ ILGPU also provides Source Link support for a better debugging experience. Make
ILGPU is licensed under the University of Illinois/NCSA Open Source License.
Detailed license information can be found in LICENSE.txt.
-Copyright (c) 2016-2023 ILGPU Project. All rights reserved.
+Copyright (c) 2016-2024 ILGPU Project. All rights reserved.
Originally developed by Marcel Koester.
diff --git a/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets b/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets
index 7f4bd581b..fb8186090 100644
--- a/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets
+++ b/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets
@@ -4,7 +4,7 @@
$(Version)
ILGPU Algorithms Library
- Copyright (c) 2016-2023 ILGPU Project. All rights reserved.
+ Copyright (c) 2016-2024 ILGPU Project. All rights reserved.
ILGPU Algorithms Project
ILGPU Algorithms library for high-level GPU programming.
diff --git a/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs b/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs
index 3d758ec6a..03d686fc5 100644
--- a/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs
+++ b/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2019-2023 ILGPU Project
+// Copyright (c) 2019-2024 ILGPU Project
// www.ilgpu.net
//
// File: CLCodeGenerator.cs
@@ -199,7 +199,7 @@ protected static string GetParameterName(Parameter parameter) =>
private int labelCounter;
private readonly Dictionary blockLookup =
- new Dictionary();
+ new Dictionary(new BasicBlock.Comparer());
private readonly string labelPrefix;
private StringBuilder prefixBuilder = new StringBuilder();
@@ -439,7 +439,8 @@ protected void GenerateCodeInternal()
blockLookup.Add(block, DeclareLabel());
// Find all phi nodes, allocate target registers and setup internal mapping
- var phiMapping = new Dictionary>();
+ var phiMapping = new Dictionary>(
+ new BasicBlock.Comparer());
var dominators = Method.Blocks.CreateDominators();
var phiBindings = PhiBindings.Create(
blocks,
diff --git a/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs b/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs
index 1c304b348..74f8b8ea7 100644
--- a/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs
+++ b/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2018-2023 ILGPU Project
+// Copyright (c) 2018-2024 ILGPU Project
// www.ilgpu.net
//
// File: PTXCodeGenerator.cs
@@ -286,7 +286,8 @@ protected static string GetParameterName(Parameter parameter) =>
#region Instance
private int labelCounter;
- private readonly Dictionary blockLookup = new();
+ private readonly Dictionary blockLookup = new(
+ new BasicBlock.Comparer());
private readonly Dictionary<(Encoding, string), string> stringConstants = new();
private readonly PhiBindings phiBindings;
diff --git a/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs b/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs
index 382d419ba..36ba0c68f 100644
--- a/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs
+++ b/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2022-2023 ILGPU Project
+// Copyright (c) 2022-2024 ILGPU Project
// www.ilgpu.net
//
// File: VelocityCodeGenerator.cs
@@ -96,7 +96,8 @@ public readonly record struct GeneratorArgs(
///
/// Maps blocks to labels.
///
- private readonly Dictionary blockLookup = new();
+ private readonly Dictionary blockLookup =
+ new(new BasicBlock.Comparer());
///
/// The masks analysis holding information about the masks being required.
diff --git a/Src/ILGPU/Frontend/Block.CFGBuilder.cs b/Src/ILGPU/Frontend/Block.CFGBuilder.cs
index a293f40c4..c743e9837 100644
--- a/Src/ILGPU/Frontend/Block.CFGBuilder.cs
+++ b/Src/ILGPU/Frontend/Block.CFGBuilder.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2018-2023 ILGPU Project
+// Copyright (c) 2018-2024 ILGPU Project
// www.ilgpu.net
//
// File: Block.CFGBuilder.cs
@@ -71,7 +71,7 @@ public readonly void Apply(ILInstruction instruction, int offset) =>
private readonly Dictionary blockMapping =
new Dictionary();
private readonly Dictionary basicBlockMapping =
- new Dictionary();
+ new Dictionary(new BasicBlock.Comparer());
private readonly Dictionary> successorMapping =
new Dictionary>();
diff --git a/Src/ILGPU/IR/Analyses/Loops.cs b/Src/ILGPU/IR/Analyses/Loops.cs
index 6aca12db0..53d19c4f4 100644
--- a/Src/ILGPU/IR/Analyses/Loops.cs
+++ b/Src/ILGPU/IR/Analyses/Loops.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2020-2023 ILGPU Project
+// Copyright (c) 2020-2024 ILGPU Project
// www.ilgpu.net
//
// File: Loops.cs
@@ -757,8 +757,8 @@ private void RegisterLoop(
// Initialize all lists and sets
var headers = InlineList.Create(2);
var breakers = InlineList.Create(2);
- var entryBlocks = new HashSet();
- var exitBlocks = new HashSet();
+ var entryBlocks = new HashSet(new BasicBlock.Comparer());
+ var exitBlocks = new HashSet(new BasicBlock.Comparer());
// Gather all loop entries and exists
foreach (var member in members)
diff --git a/Src/ILGPU/IR/BasicBlockCollection.cs b/Src/ILGPU/IR/BasicBlockCollection.cs
index b0737f0a4..0bc0ad847 100644
--- a/Src/ILGPU/IR/BasicBlockCollection.cs
+++ b/Src/ILGPU/IR/BasicBlockCollection.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2020-2023 ILGPU Project
+// Copyright (c) 2020-2024 ILGPU Project
// www.ilgpu.net
//
// File: BasicBlockCollection.cs
@@ -339,7 +339,7 @@ public readonly HashSet ToSet() =>
public readonly HashSet ToSet(TPredicate predicate)
where TPredicate : InlineList.IPredicate
{
- var result = new HashSet();
+ var result = new HashSet(new BasicBlock.Comparer());
foreach (var block in this)
{
if (predicate.Apply(block))
diff --git a/Src/ILGPU/IR/BasicBlockMapping.cs b/Src/ILGPU/IR/BasicBlockMapping.cs
index d34e5ce0f..46e809926 100644
--- a/Src/ILGPU/IR/BasicBlockMapping.cs
+++ b/Src/ILGPU/IR/BasicBlockMapping.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2020-2023 ILGPU Project
+// Copyright (c) 2020-2024 ILGPU Project
// www.ilgpu.net
//
// File: BasicBlockMapping.cs
@@ -746,7 +746,7 @@ partial struct BasicBlockSet
///
[MemberNotNull(nameof(blockSet))]
- partial void InitBlockSet() => blockSet = new HashSet();
+ partial void InitBlockSet() => blockSet = new(new BasicBlock.Comparer());
#endregion
@@ -785,7 +785,8 @@ partial struct BasicBlockMap
///
[MemberNotNull(nameof(blockMap))]
- partial void InitBlockMap() => blockMap = new Dictionary();
+ partial void InitBlockMap() => blockMap =
+ new Dictionary(new BasicBlock.Comparer());
#endregion
diff --git a/Src/ILGPU/IR/Verifier.cs b/Src/ILGPU/IR/Verifier.cs
index 9c18e0a47..7f59b4e9b 100644
--- a/Src/ILGPU/IR/Verifier.cs
+++ b/Src/ILGPU/IR/Verifier.cs
@@ -1,6 +1,6 @@
// ---------------------------------------------------------------------------------------
// ILGPU
-// Copyright (c) 2020-2023 ILGPU Project
+// Copyright (c) 2020-2024 ILGPU Project
// www.ilgpu.net
//
// File: Verifier.cs
@@ -184,11 +184,11 @@ private sealed class ControlFlowVerifier : VerifierBase
private readonly List blocksInRpo =
new List();
private readonly HashSet containedBlocks =
- new HashSet();
+ new(new BasicBlock.Comparer());
private readonly Dictionary> predecessors =
- new Dictionary>();
+ new(new BasicBlock.Comparer());
private readonly Dictionary> successors =
- new Dictionary>();
+ new(new BasicBlock.Comparer());
///
/// Constructs a new control-flow verifier.
@@ -204,15 +204,15 @@ public ControlFlowVerifier(Method method, VerificationResult result)
#region Methods
///
- /// Creates new predecessor and successor ink sets.
+ /// Creates new predecessor and successor link sets.
///
/// The current block.
private void CreateLinkSets(BasicBlock block)
{
if (!predecessors.ContainsKey(block))
- predecessors.Add(block, new HashSet());
+ predecessors.Add(block, new(new BasicBlock.Comparer()));
if (!successors.ContainsKey(block))
- successors.Add(block, new HashSet());
+ successors.Add(block, new(new BasicBlock.Comparer()));
}
///
@@ -325,7 +325,7 @@ private sealed class ValueVerifier : VerifierBase
private readonly HashSet values = new HashSet();
private readonly Dictionary> mapping =
- new Dictionary>();
+ new Dictionary>(new BasicBlock.Comparer());
///
/// Constructs a new value verifier.
@@ -465,7 +465,7 @@ private void VerifyPhis() =>
phiValue.BasicBlock.Predecessors.Length);
// Verify nodes and sources
- var visited = new HashSet();
+ var visited = new HashSet(new BasicBlock.Comparer());
for (int i = 0, e = phiValue.Nodes.Length; i < e; ++i)
{
Value value = phiValue.Nodes[i];
diff --git a/Src/ILGPU/Properties/ILGPU.nuspec.targets b/Src/ILGPU/Properties/ILGPU.nuspec.targets
index 42c7d9fe1..a57a3c386 100644
--- a/Src/ILGPU/Properties/ILGPU.nuspec.targets
+++ b/Src/ILGPU/Properties/ILGPU.nuspec.targets
@@ -4,7 +4,7 @@
$(Version)
ILGPU
- Copyright (c) 2016-2023 ILGPU Project. All rights reserved.
+ Copyright (c) 2016-2024 ILGPU Project. All rights reserved.
Marcel Koester
ILGPU Just-In-Time Compiler