From 3200d783eb38ef0d34dcd0017e091012ba8b63cc Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Wed, 24 May 2017 15:14:45 +0200 Subject: [PATCH] TrigFTKSim: Fix compilation warnings. Compilation warnings: pointer aliasing, member ordering in initialization, left shifts of signed values, unused variables, variable-length arrays. --- .../TrigFTK/TrigFTKSim/src/FTKConstantBank.cxx | 10 ++++++---- Trigger/TrigFTK/TrigFTKSim/src/FTKRoadStream.cxx | 2 +- Trigger/TrigFTK/TrigFTKSim/src/FTK_AMBank.cxx | 2 +- Trigger/TrigFTK/TrigFTKSim/src/TrackFitter.cxx | 2 +- .../TrigFTK/TrigFTKSim/src/TrackFitter711.cxx | 2 +- .../TrigFTK/TrigFTKSim/src/tsp/FTKTSPBank.cxx | 2 +- Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPLevel.cxx | 16 ++++++++-------- Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPMap.cxx | 2 +- .../TrigFTKSim/src/tsp/TSPROOTBankGenerator.cxx | 12 ++++++------ 9 files changed, 26 insertions(+), 24 deletions(-) diff --git a/Trigger/TrigFTK/TrigFTKSim/src/FTKConstantBank.cxx b/Trigger/TrigFTK/TrigFTKSim/src/FTKConstantBank.cxx index f66434b797a..bc25396bada 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/FTKConstantBank.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/FTKConstantBank.cxx @@ -19,6 +19,7 @@ #include <cstdio> #include <cmath> #include <bitset> +#include <ieee754.h> using namespace std; //#define SIMPLEMJ // ibl undefined simple majority to see if we can get majority for ibl @@ -756,10 +757,11 @@ int FTKConstantBank::missing_point_guess(FTKTrack &track, int secid, float *newc unsigned int FTKConstantBank::floatToReg27(float f) { - int f_f = (*(int*)&f); - int f_sign = (f_f >> 31) & 0x1; - int f_exp = (f_f >> 23) & 0xFF; - int f_frac = f_f & 0x007FFFFF; + ieee754_float f_f; + f_f.f = f; + int f_sign = f_f.ieee.negative; + int f_exp = f_f.ieee.exponent; + int f_frac = f_f.ieee.mantissa; int r_sign; int r_exp; int r_frac; diff --git a/Trigger/TrigFTK/TrigFTKSim/src/FTKRoadStream.cxx b/Trigger/TrigFTK/TrigFTKSim/src/FTKRoadStream.cxx index 7ed0fbacf51..ee99d64a19f 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/FTKRoadStream.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/FTKRoadStream.cxx @@ -255,7 +255,7 @@ void FTKRoadStream::attachHits( int roadid) int basessid = curroad->getSSID(ipl); // base full resolution SS for this layer // extract DC mask for this layer, reading only the related bits - unsigned int localdcmask = dcmask>>maskoffset & (~(~0<<ndcbits)); + unsigned int localdcmask = dcmask>>maskoffset & (~(~0u<<ndcbits)); // in the basessid mask the bits involved by the DC placing them to 0 basessid &= ~localdcmask; diff --git a/Trigger/TrigFTK/TrigFTKSim/src/FTK_AMBank.cxx b/Trigger/TrigFTK/TrigFTKSim/src/FTK_AMBank.cxx index 6b0a0319de2..c1219d1cef0 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/FTK_AMBank.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/FTK_AMBank.cxx @@ -229,7 +229,7 @@ void FTK_AMBank::applyWildcard() m_useWC = true; // set the use of the WC // adject the WC and Veto IDs if the STL map is used - m_VetoID = ~(~0<<(sizeof(int)*8-1)); + m_VetoID = ~(~0u<<(sizeof(int)*8-1)); m_WCID = m_VetoID-1; unsigned int *m_WC_stat = new unsigned int[m_nplanes]; // store the static collected on the wildcard diff --git a/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter.cxx b/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter.cxx index 9570f667e8f..7bc0cc4f19e 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter.cxx @@ -228,7 +228,7 @@ void TrackFitter::init() // counter that enumerates current hit in FTKHit array m_hitcnt = new int[m_nplanes]; - m_complete_mask = ~(~0<<m_ncoords); + m_complete_mask = ~(~0u<<m_ncoords); // allocate once the array of recovered tracks combtrack = new FTKTrack[m_ncoords]; for (int ic=0;ic!=m_ncoords;++ic) { diff --git a/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter711.cxx b/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter711.cxx index 2f14c6d463e..a8225fa7c8a 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter711.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/TrackFitter711.cxx @@ -242,7 +242,7 @@ void TrackFitter711::init() combtrackI[ic].setNCoords(m_ncoords_incomplete); combtrackI[ic].setNPlanes(m_nplanes_incomplete); } - m_complete_maskI = ~(~0<<m_ncoords_incomplete); + m_complete_maskI = ~(~0u<<m_ncoords_incomplete); m_nplanes_ignored = m_nplanes-m_nplanes_incomplete; m_ncoords_ignored = m_ncoords-m_ncoords_incomplete; diff --git a/Trigger/TrigFTK/TrigFTKSim/src/tsp/FTKTSPBank.cxx b/Trigger/TrigFTK/TrigFTKSim/src/tsp/FTKTSPBank.cxx index 3a4c8808801..5d883db2d4f 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/tsp/FTKTSPBank.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/tsp/FTKTSPBank.cxx @@ -1093,7 +1093,7 @@ const std::list<FTKRoad>& FTKTSPBank::getRoads() int basessid = curroad.getSSID(ipl); // extract DC mask for this layer, reading only the related bits - unsigned int localdcmask = (dcmask>>maskoffset)&(~(~0<<ndcbits)); + unsigned int localdcmask = (dcmask>>maskoffset)&(~(~0u<<ndcbits)); // in the basessid mask the bits involved by the DC placing them to 0 basessid &= ~localdcmask; diff --git a/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPLevel.cxx b/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPLevel.cxx index 6050e58477c..b817dff9f3d 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPLevel.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPLevel.cxx @@ -201,7 +201,7 @@ void TSPLevel::storeAMInfo() /* check is a valid mask: a valid mask has at least 1 bit set, there isn't any bit further the maximum set */ - unsigned int maskForInvalidBits=~0<<npos; + unsigned int maskForInvalidBits=~0u<<npos; if (npos==32) maskForInvalidBits = 0; if (npos>32) FTKSetup::PrintMessageFmt(ftk::sevr,"Error: npos>32 (i.e. more than 5 DC bits) is an invalid configuration. npos=%d\n",npos); if (!mask || mask&(maskForInvalidBits)) { @@ -229,7 +229,7 @@ int TSPLevel::evaluateSubSSMask(int nbits, int position, int dcmask, int hbmask) if (!nbits) return 0; // build mask to select only the first nbits - const int ref_ok = ~(~0<<nbits); + const int ref_ok = ~(~0u<<nbits); // shift the masks to remove the previous bits dcmask >>= position; hbmask >>= position; @@ -280,7 +280,7 @@ void TSPLevel::simulate(FTKRoad& road){ FTKSS& ss = m_splitted_ssmap[iplane][road.getSSID(iplane)]; // in the bitmask filter the position for this layer - int pos = (hbmask>>m_tspmap.getBitOffset(iplane)) & (~(~0<<m_tspmap.getNBits(iplane))); + int pos = (hbmask>>m_tspmap.getBitOffset(iplane)) & (~(~0u<<m_tspmap.getNBits(iplane))); // the position value has to be converted in binary form from the Gray encoding pos = m_tspmap.getPosition(iplane,pos); @@ -300,7 +300,7 @@ void TSPLevel::simulate(FTKRoad& road){ subroad.setPatternDBID(subroad.getPatternID()); // there is no difference at this level between 2 Ids subroad.setSectorID(road.getSectorID()); for (int ip=0;ip!=m_nplanes;++ip) { - int pos = (hbmask>>m_tspmap.getBitOffset(ip)) & (~(~0<<m_tspmap.getNBits(ip))); + int pos = (hbmask>>m_tspmap.getBitOffset(ip)) & (~(~0u<<m_tspmap.getNBits(ip))); // the "pos" value is encoded using the Gray encoding, has to trasformed in standard binary code pos = m_tspmap.getPosition(ip,pos); @@ -446,7 +446,7 @@ int TSPLevel::getPatternInfo(int ipatt, const FTKPattern *ampatt, bool readTSP) /* check is a valid mask: a valid mask has at least 1 bit set, there isn't any bit further the maximum set */ - unsigned int maskForInvalidBits=~0<<npos; + unsigned int maskForInvalidBits=~0u<<npos; if (npos==32) maskForInvalidBits = 0; if (npos>32) FTKSetup::PrintMessageFmt(ftk::sevr,"Error: npos>32 (i.e. more than 5 DC bits) is an invalid configuration. npos=%d\n",npos); if (!mask || mask&(maskForInvalidBits)) { @@ -534,7 +534,7 @@ int TSPLevel::getPatternInfo(int ipatt, int _dcmask, int _hbmask/*, bool readTSP /* check is a valid mask: a valid mask has at least 1 bit set, there isn't any bit further the maximum set */ - unsigned int maskForInvalidBits=~0<<npos; + unsigned int maskForInvalidBits=~0u<<npos; if (npos==32) maskForInvalidBits = 0; if (npos>32) FTKSetup::PrintMessageFmt(ftk::sevr,"Error: npos>32 (i.e. more than 5 DC bits) is an invalid configuration. npos=%d\n",npos); if (!mask || mask&(maskForInvalidBits)) { @@ -561,7 +561,7 @@ unsigned int TSPLevel::getHBMask(int patt, int layer) const { const int &curhbmask = m_hbmask[patt][0]; // shift the word to have the bits for the layer in LSB position and set to bits after npos - return (curhbmask>>bitoffset)&(~(~0<<npos)); + return (curhbmask>>bitoffset)&(~(~0u<<npos)); } /** Return the DC mask for the high precision part for the layer "patt" @@ -577,7 +577,7 @@ unsigned int TSPLevel::getDCMask(int patt, int layer) const { const int &curdcmask = m_dcmask[patt]; // shift the word to have the bits for the layer in LSB position and set to bits after npos - return (curdcmask>>bitoffset)&(~(~0<<npos)); + return (curdcmask>>bitoffset)&(~(~0u<<npos)); } diff --git a/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPMap.cxx b/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPMap.cxx index 6d1038dcff6..e761d4aafe3 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPMap.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPMap.cxx @@ -218,7 +218,7 @@ int TSPMap::getPosition(int plane, int val) case 2: // decompose the 2 coordinates posY = val>>m_internal_nbits[plane][0]; - posX = val&(~(~0<<m_internal_nbits[plane][0])); + posX = val&(~(~0u<<m_internal_nbits[plane][0])); // convert the value in Gray code posX = GC2IEEE(m_internal_nbits[plane][0],posX); posY = GC2IEEE(m_internal_nbits[plane][1],posY); diff --git a/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPROOTBankGenerator.cxx b/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPROOTBankGenerator.cxx index 59d47ca9a3b..081040d9c2b 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPROOTBankGenerator.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/tsp/TSPROOTBankGenerator.cxx @@ -266,10 +266,10 @@ void TSPROOTBankGenerator::generateChildren(int bankID, int planes) throw (TSPPa unsigned int bitlayerY = (localY % etass)/(m_ssMaps[bankID-1]->getMap(i, 0, 0).m_etass); // between 0 and 2^(nbitsY)-1 // verify that there are not bits set after nbitsX, then nbitsY - if (bitlayerX&(~0<<nbitsX)) { + if (bitlayerX&(~0u<<nbitsX)) { FTKSetup::PrintMessageFmt(ftk::sevr,"Error creating the local-SS representation for pattern %d, bitlayerX[%d]=%d\n",iTSP,i,bitlayerX); } - if (bitlayerY&(~0<<nbitsY)) { + if (bitlayerY&(~0u<<nbitsY)) { FTKSetup::PrintMessageFmt(ftk::sevr,"Error creating the local-SS representation for pattern %d, bitlayerY[%d]=%d\n",iTSP,i,bitlayerY); } @@ -292,7 +292,7 @@ void TSPROOTBankGenerator::generateChildren(int bankID, int planes) throw (TSPPa // Half plane bit unsigned int bitlayerX = (localX % phiss)/(m_ssMaps[bankID-1]->getMap(i, 0, 0).m_phiss); // is 0 to (2^nbits-1) // verify that there are not bits set after nbitsX - if (bitlayerX&(~0<<nbitsX)) { + if (bitlayerX&(~0u<<nbitsX)) { FTKSetup::PrintMessageFmt(ftk::sevr,"Error creating the local-SS representation for pattern %d, bitlayerX[%d]=%d\n",iTSP,i,bitlayerX); } // use the Grey code for the position @@ -391,10 +391,10 @@ void TSPROOTBankGenerator::generateChildren(int bankID, int planes) throw (TSPPa // if (debug) printf ("bitlayerX: %d, bitlayerY: %d\n", bitlayerX,bitlayerY); // verify that there are not bits set after nbitsX, then nbitsY - if (bitlayerX&(~0<<nbitsX)) { + if (bitlayerX&(~0u<<nbitsX)) { FTKSetup::PrintMessageFmt(ftk::sevr,"Error creating the local-SS representation for pattern %d, bitlayerX[%d]=%d\n",iTSP,i,bitlayerX); } - if (bitlayerY&(~0<<nbitsY)) { + if (bitlayerY&(~0u<<nbitsY)) { FTKSetup::PrintMessageFmt(ftk::sevr,"Error creating the local-SS representation for pattern %d, bitlayerY[%d]=%d\n",iTSP,i,bitlayerY); } @@ -445,7 +445,7 @@ void TSPROOTBankGenerator::generateChildren(int bankID, int planes) throw (TSPPa unsigned int bitlayerX = phi_dc; // between 0 and 2^(nbitsX)-1 // verify that there are not bits set after nbitsX, then nbitsY - if (bitlayerX&(~0<<nbitsX)) { + if (bitlayerX&(~0u<<nbitsX)) { FTKSetup::PrintMessageFmt(ftk::sevr,"Error creating the local-SS representation for pattern %d, bitlayerX[%d]=%d\n",iTSP,i,bitlayerX); } -- GitLab