diff --git a/numba/core/untyped_passes.py b/numba/core/untyped_passes.py
index 1a2a42481..157b4d198 100644
--- a/numba/core/untyped_passes.py
+++ b/numba/core/untyped_passes.py
@@ -602,7 +602,7 @@ class TransformLiteralUnrollConstListToTuple(FunctionPass):
     """
     _name = "transform_literal_unroll_const_list_to_tuple"
 
-    _accepted_types = (types.Tuple, types.UniTuple)
+    _accepted_types = (types.BaseTuple,)
 
     def __init__(self):
         FunctionPass.__init__(self)
@@ -716,7 +716,7 @@ class MixedContainerUnroller(FunctionPass):
 
     _DEBUG = False
 
-    _accepted_types = (types.Tuple, types.UniTuple)
+    _accepted_types = (types.BaseTuple,)
 
     def __init__(self):
         FunctionPass.__init__(self)
@@ -1234,7 +1234,7 @@ class IterLoopCanonicalization(FunctionPass):
     _DEBUG = False
 
     # if partial typing info is available it will only look at these types
-    _accepted_types = (types.Tuple, types.UniTuple)
+    _accepted_types = (types.BaseTuple,)
     _accepted_calls = (literal_unroll,)
 
     def __init__(self):

literal_unroll needs to know about `types.Named*Tuple`
<!--

Thanks for opening an issue! To help the Numba team handle your information
efficiently, please first ensure that there is no other issue present that
already describes the issue you have
(search at https://github.com/numba/numba/issues?&q=is%3Aissue).

For more general "how do I do X?" type questions, please speak to us in real
time on https://gitter.im/numba/numba or post to the Numba mailing list
https://groups.google.com/a/continuum.io/forum/#!forum/numba-users.

-->

## Reporting a bug

<!--

Before submitting a bug report please ensure that you can check off these boxes:

-->

- [x] I am using the latest released version of Numba (most recent is visible in
 the change log (https://github.com/numba/numba/blob/master/CHANGE_LOG).
- [x] I have included below a minimal working reproducer (if you are unsure how
 to write one see http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports).

<!--

Please include details of the bug here, including, if applicable, what you
expected to happen!

-->
This was reported here: https://gitter.im/numba/numba?at=5e57e6a186e6ec2f5c6466a6
```python
from collections import namedtuple
from numba import njit, literal_unroll

ABC = namedtuple('ABC', ['a', 'b', 'c'])

@njit
def unroll(x):
    for z in literal_unroll(x):
        print(z)

abc = ABC(1, 2, 3)
print(unroll(abc))
```
does this
```
Invalid use of literal_unroll with a function argument, only tuples are supported as function arguments, found ABC(int64 x 3)
```
As the Numba internal Python 3.8 tuple `__hash__` alg uses `literal_unroll`, the above issue breaks hashing on named tuples in Python 3.8.
diff --git a/numba/tests/test_mixed_tuple_unroller.py b/numba/tests/test_mixed_tuple_unroller.py
index 0c3099276..53297f7c2 100644
--- a/numba/tests/test_mixed_tuple_unroller.py
+++ b/numba/tests/test_mixed_tuple_unroller.py
@@ -1,3 +1,4 @@
+from collections import namedtuple
 import numpy as np
 
 from numba.tests.support import (TestCase, MemoryLeakMixin,
@@ -1650,6 +1651,60 @@ class TestMore(TestCase):
             ['a 1', 'b 2', '3 c', '4 d'],
         )
 
+    def test_unroll_named_tuple(self):
+        ABC = namedtuple('ABC', ['a', 'b', 'c'])
+
+        @njit
+        def foo():
+            abc = ABC(1, 2j, 3.4)
+            out = 0
+            for i in literal_unroll(abc):
+                out += i
+            return out
+
+        self.assertEqual(foo(), foo.py_func())
+
+    def test_unroll_named_tuple_arg(self):
+        ABC = namedtuple('ABC', ['a', 'b', 'c'])
+
+        @njit
+        def foo(x):
+            out = 0
+            for i in literal_unroll(x):
+                out += i
+            return out
+
+        abc = ABC(1, 2j, 3.4)
+
+        self.assertEqual(foo(abc), foo.py_func(abc))
+
+    def test_unroll_named_unituple(self):
+        ABC = namedtuple('ABC', ['a', 'b', 'c'])
+
+        @njit
+        def foo():
+            abc = ABC(1, 2, 3)
+            out = 0
+            for i in literal_unroll(abc):
+                out += i
+            return out
+
+        self.assertEqual(foo(), foo.py_func())
+
+    def test_unroll_named_unituple_arg(self):
+        ABC = namedtuple('ABC', ['a', 'b', 'c'])
+
+        @njit
+        def foo(x):
+            out = 0
+            for i in literal_unroll(x):
+                out += i
+            return out
+
+        abc = ABC(1, 2, 3)
+
+        self.assertEqual(foo(abc), foo.py_func(abc))
+
     def test_unroll_global_tuple(self):
 
         @njit

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov
apt-get update apt-get install -y gcc g++
3.7
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi @ file:///croot/certifi_1671487769961/work/certifi
coverage==7.2.7
exceptiongroup==1.2.2
importlib-metadata==6.7.0
iniconfig==2.0.0
llvmlite==0.31.0
-e git+https://github.com/numba/numba.git@a4c4a8dceb0801672d6fda9199c36047dba16f0b#egg=numba
numpy==1.21.6
packaging==24.0
pluggy==1.2.0
pytest==7.4.4
pytest-cov==4.1.0
tomli==2.0.1
typing_extensions==4.7.1
zipp==3.15.0

name: numba
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - argparse==1.4.0
      - coverage==7.2.7
      - exceptiongroup==1.2.2
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - llvmlite==0.31.0
      - numpy==1.21.6
      - packaging==24.0
      - pluggy==1.2.0
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - zipp==3.15.0
prefix: /opt/conda/envs/numba

numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_named_tuple numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_named_tuple_arg numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_named_unituple_arg
numba/tests/test_mixed_tuple_unroller.py::TestLiteralTupleInterpretation::test_heterogeneous_literal numba/tests/test_mixed_tuple_unroller.py::TestLiteralTupleInterpretation::test_homogeneous_literal numba/tests/test_mixed_tuple_unroller.py::TestLiteralTupleInterpretation::test_non_literal numba/tests/test_mixed_tuple_unroller.py::TestLoopCanonicalisation::test_influence_of_typed_transform_literal_unroll numba/tests/test_mixed_tuple_unroller.py::TestLoopCanonicalisation::test_inlined_loops numba/tests/test_mixed_tuple_unroller.py::TestLoopCanonicalisation::test_simple_loop_in_depth numba/tests/test_mixed_tuple_unroller.py::TestLoopCanonicalisation::test_transform_scope numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_01 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_02 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_03 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_04 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_05 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_07 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_08 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_09 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_10 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_11 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_11a numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_12 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_13 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_14 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_15 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_16 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_17 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_18 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_19 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_20 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_21 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_22 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_23 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_24 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_25 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_26 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_27 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_28 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_29 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_30 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_31 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_32 numba/tests/test_mixed_tuple_unroller.py::TestMixedTupleUnroll::test_33 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_01 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_02 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_03 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_04 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_05 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_06 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_10 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_11 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_12 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_13 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_14 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_7 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_8 numba/tests/test_mixed_tuple_unroller.py::TestConstListUnroll::test_9 numba/tests/test_mixed_tuple_unroller.py::TestMore::test_inlined_unroll_list numba/tests/test_mixed_tuple_unroller.py::TestMore::test_invalid_use_of_unroller numba/tests/test_mixed_tuple_unroller.py::TestMore::test_non_constant_list numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_freevar_tuple numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_function_tuple numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_global_tuple numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_named_unituple numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_tuple_alias numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_tuple_arg numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_tuple_arg2 numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_tuple_nested numba/tests/test_mixed_tuple_unroller.py::TestMore::test_unroll_tuple_of_dict numba/tests/test_mixed_tuple_unroller.py::TestLiteralUnrollPassTriggering::test_literal_unroll_assess_empty_function numba/tests/test_mixed_tuple_unroller.py::TestLiteralUnrollPassTriggering::test_literal_unroll_globals_and_locals numba/tests/test_mixed_tuple_unroller.py::TestLiteralUnrollPassTriggering::test_literal_unroll_is_invoked numba/tests/test_mixed_tuple_unroller.py::TestLiteralUnrollPassTriggering::test_literal_unroll_is_invoked_via_alias numba/tests/test_mixed_tuple_unroller.py::TestLiteralUnrollPassTriggering::test_literal_unroll_not_in_globals numba/tests/test_mixed_tuple_unroller.py::TestLiteralUnrollPassTriggering::test_literal_unroll_not_invoked
numba/core/untyped_passes.py
numba/core/untyped_passes.py