mem-ruby,misc: Fixed clang template def error
authorBobby R. Bruce <bbruce@ucdavis.edu>
Wed, 27 May 2020 10:16:06 +0000 (03:16 -0700)
committerBobby R. Bruce <bbruce@ucdavis.edu>
Thu, 28 May 2020 04:48:54 +0000 (04:48 +0000)
commite5a2fbb860afa8221db591535cb874220f05e9d9
tree40d173e51e3d4030d20b75ff7bb0a6179d6614ad
parent5ad159ea323666640dc3d2e44069ab79c10f8904
mem-ruby,misc: Fixed clang template def error

Without this fix `error: call to function 'operator<<' that is neither
visible in the template definition nor found by argument-dependent
loopup` is thrown  when compiling HSAIL_X86 using a clang compiler (at
`base/cprintf_formats.hhi:139`).

This error is due to a "<<" operator in a template declared prior to its
definition in the code. The operator is used in
`base/cprintf_formats.hh`, included in `base/cprintf.hh`, and defined in
`mem/ruby/common/BoolVec.hh`. Therefore, for clang to compile without
error, `mem/ruby/common/BoolVec.hh` must be included before
`base/cprintf.hh` when generating the
`mem/ruby/protocol/RegionBuffer_Controller.cc` in
`mem/slicc/symbols/StateMachine.py`.

Due to the gem5 style-checker, an overly-verbose solution was required
to permit this patch to be committed to the codebase.

Change-Id: Ie0ae4053e4adc8c4e918e4a714035637925ca104
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29532
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
src/mem/slicc/symbols/StateMachine.py