mem-cache: Remove "inline" from a method in one of the prefetchers.
authorGabe Black <gabe.black@gmail.com>
Thu, 12 Nov 2020 07:01:48 +0000 (23:01 -0800)
committerGabe Black <gabe.black@gmail.com>
Thu, 12 Nov 2020 22:04:42 +0000 (22:04 +0000)
The function was defined in a .cc file but marked as inline. gcc seems
to often figure out what it should do, but in clang it doesn't export
the function (since it's marked as inline), and during linking external
references, which don't have a local copy since it's not defined in the
.hh file, will fail.

This failure looks particularly odd because the funciton is virtual,
and so the failure is reported as being unable to compose the vtable
in places where the object is constructed, relatively obscure code
which is generated by the build system and obscured by templates from
an external code base (pybind11).

Change-Id: Ib51aefbf9005e4ca8dfebef32c5def472175f115
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/37436
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/mem/cache/prefetch/stride.cc

index 0020371c6f8e4e9d5c274b99855c843a5845da20..11ecd16c4e32367bb3ef625c8f0a3da6c363f69d 100644 (file)
@@ -187,7 +187,7 @@ Stride::calculatePrefetch(const PrefetchInfo &pfi,
     }
 }
 
-inline uint32_t
+uint32_t
 StridePrefetcherHashedSetAssociative::extractSet(const Addr pc) const
 {
     const Addr hash1 = pc >> 1;