Skip to content

Commit

Permalink
fapi2: Fix template call sites for GCC 7
Browse files Browse the repository at this point in the history
The following errors stop hostboot from building with modern GCC:

src/import/hwpf/fapi2/include/buffer.H:710:23: error: invalid
operands of types ‘<unresolved overloaded function type>’ and
‘fapi2::bufferTraits<long unsigned int, unsigned int>::bits_type
{aka unsigned int}’ to binary ‘operator<’
             out.insert<TS, L, SS>(iv_data);
             ~~~~~~~~~~^~~

src/import/hwpf/fapi2/include/buffer.H: In member function
‘fapi2::buffer<T, TT>& fapi2::buffer<T, TT>::flipBit()’:
src/import/hwpf/fapi2/include/buffer.H:316:49: error: expected
primary-expression before ‘)’ token
             iv_data ^= buffer<T>().setBit<B, C>();
                                                 ^
In both cases the call site needs to be prepended with the keyword
'template'. Otherwise the name is assumed to be a non-template (as per
C++ 14.2/4).

Change-Id: I925c35d51787c4f4f232372f0e1299ec2a5cab42
Signed-off-by: Joel Stanley <joel.stanley@au1.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49760
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/49890
Reviewed-by: Hostboot Team <hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
  • Loading branch information
Joel Stanley authored and sgupta2m committed Dec 1, 2017
1 parent 7bd8c25 commit fca1480
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/import/hwpf/fapi2/include/buffer.H
Expand Up @@ -228,7 +228,7 @@ class buffer
static_assert((B >= 0) &&
((B + C - 1) < TT::bits_per_unit()), "failed range check");

iv_data &= buffer<T>().setBit<B, C>().invert();
iv_data &= buffer<T>().template setBit<B, C>().invert();
return *this;
}

Expand Down Expand Up @@ -313,7 +313,7 @@ class buffer
static_assert((B >= 0) &&
((B + C - 1) < TT::bits_per_unit()), "failed range check");

iv_data ^= buffer<T>().setBit<B, C>();
iv_data ^= buffer<T>().template setBit<B, C>();
return *this;
}

Expand All @@ -327,7 +327,7 @@ class buffer
template< bits_type B, bits_type C = 1>
inline bool getBit(void) const
{
return buffer<T>().setBit<B, C>() & iv_data;
return buffer<T>().template setBit<B, C>() & iv_data;
}

///
Expand Down Expand Up @@ -707,7 +707,7 @@ class buffer
// Extraction is just an insert into o_out

buffer<OT> out(o_out);
out.insert<TS, L, SS>(iv_data);
out.template insert<TS, L, SS>(iv_data);
o_out = out;
return *this;
}
Expand All @@ -727,7 +727,7 @@ class buffer
// Extraction is just an insert into o_out

buffer<OT> out(o_out);
out.insert<TS, L, SS>(iv_data);
out.template insert<TS, L, SS>(iv_data);
o_out = out;
return *this;
}
Expand Down

0 comments on commit fca1480

Please sign in to comment.