Did that patch work for you, Lisa? It would be annoying to set up my own
install of an appropriate version of gcc so I'm using you as a guinea
pig for the older versions. If it works for you I'll commit it.

Gabe

On 10/31/11 23:23, Gabe Black wrote:
> Here, give this patch a try.
>
> Gabe
>
> On 10/31/11 19:59, Gabriel Michael Black wrote:
>> Oh, sorry about that. I think there were only two lines where I
>> changed flags, that one and the -Wno-unused-label one. For now if you
>> comment those lines out of src/SConscript I think that will get it
>> working again. I'll look into adding a check.
>>
>> Gabe
>>
>> Quoting Lisa Hsu <[email protected]>:
>>
>>> Hey Gabe,
>>>
>>> So, this change actually breaks with some earlier versions of GCC.  For
>>> example, I'm running 4.2.0 at work (for various reasons) and it doesn't
>>> understand the -Wno-unused-but-set-variable flag.  I can update but for
>>> backward compatibility reasons, we probably should be able to compile
>>> even
>>> with 4.2.0.
>>>
>>> Can you put in a check to not add that unless GCC understands that flag?
>>>
>>> Thanks,
>>> Lisa
>>>
>>> On Mon, Oct 31, 2011 at 1:24 AM, Gabe Black <[email protected]>
>>> wrote:
>>>
>>>> After much delay, this should straighten out the majority of problems
>>>> people have been having with gcc 4.6.1. Unfortunately gcc 4.6.0
>>>> seems to
>>>> have a bug that makes a warning trigger when it shouldn't, but it looks
>>>> like that was fixed in 4.6.1. Thanks to Ali for tracking down a bug I'd
>>>> introduced in the ARM support in the original version of this change.
>>>>
>>>> Gabe
>>>>
>>>> On 10/31/11 01:19, Gabe Black wrote:
>>>>> changeset 5fb918115c07 in /z/repo/gem5
>>>>> details: http://repo.gem5.org/gem5?cmd=changeset;node=5fb918115c07
>>>>> description:
>>>>>       GCC: Get everything working with gcc 4.6.1.
>>>>>
>>>>>       And by "everything" I mean all the quick regressions.
>>>>>
>>>>> diffstat:
>>>>>
>>>>>  src/SConscript                          |   2 ++
>>>>>  src/arch/alpha/ev5.cc                   |   7 ++-----
>>>>>  src/arch/alpha/isa/mem.isa              |   2 +-
>>>>>  src/arch/arm/isa/formats/fp.isa         |  18 ++++++++++--------
>>>>>  src/arch/arm/isa/insts/fp.isa           |   4 ++--
>>>>>  src/arch/arm/isa/insts/m5ops.isa        |  19 +++----------------
>>>>>  src/arch/arm/isa/insts/macromem.isa     |   7 ++++---
>>>>>  src/arch/arm/isa/insts/neon.isa         |  16 +++++++---------
>>>>>  src/arch/arm/isa/templates/mem.isa      |   4 ++--
>>>>>  src/arch/mips/isa/decoder.isa           |   8 +++-----
>>>>>  src/arch/mips/isa/formats/mt.isa        |  22 ++++++----------------
>>>>>  src/arch/mips/isa/includes.isa          |   2 ++
>>>>>  src/arch/mips/tlb.cc                    |   2 --
>>>>>  src/arch/power/isa/formats/mem.isa      |   2 +-
>>>>>  src/arch/power/tlb.cc                   |   2 --
>>>>>  src/arch/sparc/isa/formats/mem/util.isa |   5 ++---
>>>>>  src/arch/x86/isa/microops/base.isa      |   3 ++-
>>>>>  src/base/inet.cc                        |   1 +
>>>>>  src/cpu/base.cc                         |   3 +--
>>>>>  src/cpu/inorder/cpu.cc                  |   8 ++------
>>>>>  src/cpu/legiontrace.cc                  |   2 +-
>>>>>  src/cpu/o3/cpu.cc                       |   1 -
>>>>>  src/cpu/o3/rename_impl.hh               |  16 ++++------------
>>>>>  src/mem/cache/tags/iic.cc               |   2 --
>>>>>  src/mem/ruby/network/orion/Clock.cc     |   7 -------
>>>>>  src/mem/ruby/system/PersistentTable.hh  |   1 +
>>>>>  src/mem/ruby/system/PseudoLRUPolicy.hh  |   3 ---
>>>>>  src/python/m5/params.py                 |   1 +
>>>>>  src/python/swig/pyobject.cc             |   4 ----
>>>>>  29 files changed, 60 insertions(+), 114 deletions(-)
>>>>>
>>>>> diffs (truncated from 695 to 300 lines):
>>>>>
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/SConscript
>>>>> --- a/src/SConscript  Sun Oct 30 15:57:39 2011 -0500
>>>>> +++ b/src/SConscript  Mon Oct 31 01:09:44 2011 -0700
>>>>> @@ -851,6 +851,8 @@
>>>>>          swig_env.Append(CCFLAGS='-Wno-uninitialized')
>>>>>          swig_env.Append(CCFLAGS='-Wno-sign-compare')
>>>>>          swig_env.Append(CCFLAGS='-Wno-parentheses')
>>>>> +        swig_env.Append(CCFLAGS='-Wno-unused-label')
>>>>> +        swig_env.Append(CCFLAGS='-Wno-unused-but-set-variable')
>>>>>
>>>>>      werror_env = new_env.Clone()
>>>>>      werror_env.Append(CCFLAGS='-Werror')
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/arch/alpha/ev5.cc
>>>>> --- a/src/arch/alpha/ev5.cc   Sun Oct 30 15:57:39 2011 -0500
>>>>> +++ b/src/arch/alpha/ev5.cc   Mon Oct 31 01:09:44 2011 -0700
>>>>> @@ -209,8 +209,6 @@
>>>>>  void
>>>>>  ISA::setIpr(int idx, uint64_t val, ThreadContext *tc)
>>>>>  {
>>>>> -    uint64_t old;
>>>>> -
>>>>>      if (tc->misspeculating())
>>>>>          return;
>>>>>
>>>>> @@ -262,12 +260,11 @@
>>>>>
>>>>>        case IPR_PALtemp23:
>>>>>          // write entire quad w/ no side-effect
>>>>> -        old = ipr[idx];
>>>>> -        ipr[idx] = val;
>>>>>  #if FULL_SYSTEM
>>>>>          if (tc->getKernelStats())
>>>>> -            tc->getKernelStats()->context(old, val, tc);
>>>>> +            tc->getKernelStats()->context(ipr[idx], val, tc);
>>>>>  #endif
>>>>> +        ipr[idx] = val;
>>>>>          break;
>>>>>
>>>>>        case IPR_DTB_PTE:
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/arch/alpha/isa/mem.isa
>>>>> --- a/src/arch/alpha/isa/mem.isa      Sun Oct 30 15:57:39 2011 -0500
>>>>> +++ b/src/arch/alpha/isa/mem.isa      Mon Oct 31 01:09:44 2011 -0700
>>>>> @@ -388,7 +388,7 @@
>>>>>      Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
>>>>>                                    Trace::InstRecord *traceData)
>>>> const
>>>>>      {
>>>>> -        Addr EA;
>>>>> +        Addr EA M5_VAR_USED;
>>>>>          Fault fault = NoFault;
>>>>>
>>>>>          %(fp_enable_check)s;
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/arch/arm/isa/formats/fp.isa
>>>>> --- a/src/arch/arm/isa/formats/fp.isa Sun Oct 30 15:57:39 2011 -0500
>>>>> +++ b/src/arch/arm/isa/formats/fp.isa Mon Oct 31 01:09:44 2011 -0700
>>>>> @@ -561,20 +561,22 @@
>>>>>                  }
>>>>>              }
>>>>>            case 0xa:
>>>>> +            if (q)
>>>>> +                return new Unknown(machInst);
>>>>>              if (b) {
>>>>> -                return decodeNeonUSThreeReg<VpminD, VpminQ>(
>>>>> -                        q, u, size, machInst, vd, vn, vm);
>>>>> +                return decodeNeonUSThreeUSReg<VpminD>(
>>>>> +                        u, size, machInst, vd, vn, vm);
>>>>>              } else {
>>>>> -                return decodeNeonUSThreeReg<VpmaxD, VpmaxQ>(
>>>>> -                        q, u, size, machInst, vd, vn, vm);
>>>>> +                return decodeNeonUSThreeUSReg<VpmaxD>(
>>>>> +                        u, size, machInst, vd, vn, vm);
>>>>>              }
>>>>>            case 0xb:
>>>>>              if (b) {
>>>>> -                if (u) {
>>>>> +                if (u || q) {
>>>>>                      return new Unknown(machInst);
>>>>>                  } else {
>>>>> -                    return decodeNeonUThreeReg<NVpaddD, NVpaddQ>(
>>>>> -                            q, size, machInst, vd, vn, vm);
>>>>> +                    return decodeNeonUThreeUSReg<NVpaddD>(
>>>>> +                            size, machInst, vd, vn, vm);
>>>>>                  }
>>>>>              } else {
>>>>>                  if (u) {
>>>>> @@ -1542,7 +1544,7 @@
>>>>>                  else
>>>>>                      return new NVswpD<uint64_t>(machInst, vd, vm);
>>>>>                case 0x1:
>>>>> -                return decodeNeonUTwoMiscReg<NVtrnD, NVtrnQ>(
>>>>> +                return decodeNeonUTwoMiscSReg<NVtrnD, NVtrnQ>(
>>>>>                          q, size, machInst, vd, vm);
>>>>>                case 0x2:
>>>>>                  return decodeNeonUTwoMiscReg<NVuzpD, NVuzpQ>(
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/arch/arm/isa/insts/fp.isa
>>>>> --- a/src/arch/arm/isa/insts/fp.isa   Sun Oct 30 15:57:39 2011 -0500
>>>>> +++ b/src/arch/arm/isa/insts/fp.isa   Mon Oct 31 01:09:44 2011 -0700
>>>>> @@ -447,7 +447,7 @@
>>>>>      exec_output = ""
>>>>>
>>>>>      singleSimpleCode = vfpEnabledCheckCode + '''
>>>>> -        FPSCR fpscr = (FPSCR) FpscrExc;
>>>>> +        FPSCR fpscr M5_VAR_USED = (FPSCR) FpscrExc;
>>>>>          FpDest = %(op)s;
>>>>>      '''
>>>>>      singleCode = singleSimpleCode + '''
>>>>> @@ -457,7 +457,7 @@
>>>>>                  "%(func)s, fpscr.fz, fpscr.dn, fpscr.rMode)"
>>>>>      singleUnaryOp = "unaryOp(fpscr, FpOp1, %(func)s, fpscr.fz,
>>>> fpscr.rMode)"
>>>>>      doubleCode = vfpEnabledCheckCode + '''
>>>>> -        FPSCR fpscr = (FPSCR) FpscrExc;
>>>>> +        FPSCR fpscr M5_VAR_USED = (FPSCR) FpscrExc;
>>>>>          double dest = %(op)s;
>>>>>          FpDestP0_uw = dblLow(dest);
>>>>>          FpDestP1_uw = dblHi(dest);
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/arch/arm/isa/insts/m5ops.isa
>>>>> --- a/src/arch/arm/isa/insts/m5ops.isa        Sun Oct 30 15:57:39
>>>> 2011
>>>> -0500
>>>>> +++ b/src/arch/arm/isa/insts/m5ops.isa        Mon Oct 31 01:09:44
>>>> 2011
>>>> -0700
>>>>> @@ -54,9 +54,7 @@
>>>>>
>>>>>
>>>>>      armCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      PseudoInst::arm(xc->tcBase());
>>>>> -#endif
>>>>>      '''
>>>>>      armIop = InstObjParams("arm", "Arm", "PredOp",
>>>>>                             { "code": armCode,
>>>>> @@ -67,9 +65,7 @@
>>>>>      exec_output += PredOpExecute.subst(armIop)
>>>>>
>>>>>      quiesceCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      PseudoInst::quiesce(xc->tcBase());
>>>>> -#endif
>>>>>      '''
>>>>>      quiesceIop = InstObjParams("quiesce", "Quiesce", "PredOp",
>>>>>                             { "code": quiesceCode,
>>>>> @@ -80,9 +76,7 @@
>>>>>      exec_output += QuiescePredOpExecute.subst(quiesceIop)
>>>>>
>>>>>      quiesceNsCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      PseudoInst::quiesceNs(xc->tcBase(), join32to64(R1, R0));
>>>>> -#endif
>>>>>      '''
>>>>>
>>>>>      quiesceNsIop = InstObjParams("quiesceNs", "QuiesceNs", "PredOp",
>>>>> @@ -94,9 +88,7 @@
>>>>>      exec_output += QuiescePredOpExecute.subst(quiesceNsIop)
>>>>>
>>>>>      quiesceCyclesCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      PseudoInst::quiesceCycles(xc->tcBase(), join32to64(R1, R0));
>>>>> -#endif
>>>>>      '''
>>>>>
>>>>>      quiesceCyclesIop = InstObjParams("quiesceCycles",
>>>> "QuiesceCycles",
>>>> "PredOp",
>>>>> @@ -108,11 +100,9 @@
>>>>>      exec_output += QuiescePredOpExecute.subst(quiesceCyclesIop)
>>>>>
>>>>>      quiesceTimeCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      uint64_t qt_val = PseudoInst::quiesceTime(xc->tcBase());
>>>>>      R0 = bits(qt_val, 31, 0);
>>>>>      R1 = bits(qt_val, 63, 32);
>>>>> -#endif
>>>>>      '''
>>>>>
>>>>>      quiesceTimeIop = InstObjParams("quiesceTime", "QuiesceTime",
>>>> "PredOp",
>>>>> @@ -188,9 +178,7 @@
>>>>>      exec_output += PredOpExecute.subst(m5exitIop)
>>>>>
>>>>>      loadsymbolCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      PseudoInst::loadsymbol(xc->tcBase());
>>>>> -#endif
>>>>>      '''
>>>>>
>>>>>      loadsymbolIop = InstObjParams("loadsymbol", "Loadsymbol",
>>>> "PredOp",
>>>>> @@ -204,6 +192,9 @@
>>>>>      initparamCode = '''
>>>>>  #if FULL_SYSTEM
>>>>>      Rt = PseudoInst::initParam(xc->tcBase());
>>>>> +#else
>>>>> +    PseudoInst::panicFsOnlyPseudoInst("initparam");
>>>>> +    Rt = 0;
>>>>>  #endif
>>>>>      '''
>>>>>
>>>>> @@ -260,11 +251,9 @@
>>>>>      exec_output += PredOpExecute.subst(m5checkpointIop)
>>>>>
>>>>>      m5readfileCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      int n = 4;
>>>>>      uint64_t offset = getArgument(xc->tcBase(), n, sizeof(uint64_t),
>>>> false);
>>>>>      R0 = PseudoInst::readfile(xc->tcBase(), R0, join32to64(R3,R2),
>>>> offset);
>>>>> -#endif
>>>>>      '''
>>>>>      m5readfileIop = InstObjParams("m5readfile", "M5readfile",
>>>> "PredOp",
>>>>>                             { "code": m5readfileCode,
>>>>> @@ -291,9 +280,7 @@
>>>>>      exec_output += PredOpExecute.subst(m5switchcpuIop)
>>>>>
>>>>>      m5addsymbolCode = '''
>>>>> -#if FULL_SYSTEM
>>>>>      PseudoInst::addsymbol(xc->tcBase(), join32to64(R1, R0), R2);
>>>>> -#endif
>>>>>      '''
>>>>>      m5addsymbolIop = InstObjParams("m5addsymbol", "M5addsymbol",
>>>> "PredOp",
>>>>>                             { "code": m5addsymbolCode,
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07
>>>> src/arch/arm/isa/insts/macromem.isa
>>>>> --- a/src/arch/arm/isa/insts/macromem.isa     Sun Oct 30 15:57:39
>>>> 2011
>>>> -0500
>>>>> +++ b/src/arch/arm/isa/insts/macromem.isa     Mon Oct 31 01:09:44
>>>> 2011
>>>> -0700
>>>>> @@ -563,15 +563,16 @@
>>>>>
>>>>>  let {{
>>>>>      exec_output = ''
>>>>> -    for type in ('uint8_t', 'uint16_t', 'uint32_t'):
>>>>> +    for typeSize in (8, 16, 32):
>>>>>          for sRegs in 1, 2:
>>>>> -            for dRegs in range(sRegs, 5):
>>>>> +            for dRegs in range(sRegs, min(sRegs * 64 / typeSize + 1,
>>>> 5)):
>>>>>                  for format in
>>>> ("MicroUnpackNeon%(sRegs)dto%(dRegs)dUop",
>>>> "MicroUnpackAllNeon%(sRegs)dto%(dRegs)dUop",
>>>>>                                
>>>> "MicroPackNeon%(dRegs)dto%(sRegs)dUop"):
>>>>>                      Name = format % { "sRegs" : sRegs * 2,
>>>>>                                        "dRegs" : dRegs * 2 }
>>>>> -                    substDict = { "class_name" : Name, "targs" :
>>>> type }
>>>>> +                    substDict = { "class_name" : Name,
>>>>> +                                  "targs" : "uint%d_t" % typeSize }
>>>>>                      exec_output +=
>>>> MicroNeonExecDeclare.subst(substDict)
>>>>>  }};
>>>>>
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/arch/arm/isa/insts/neon.isa
>>>>> --- a/src/arch/arm/isa/insts/neon.isa Sun Oct 30 15:57:39 2011 -0500
>>>>> +++ b/src/arch/arm/isa/insts/neon.isa Mon Oct 31 01:09:44 2011 -0700
>>>>> @@ -1619,10 +1619,8 @@
>>>>>      threeEqualRegInst("vadd", "NVaddD", "SimdAddOp",
>>>> unsignedTypes, 2,
>>>> vaddCode)
>>>>>      threeEqualRegInst("vadd", "NVaddQ", "SimdAddOp",
>>>> unsignedTypes, 4,
>>>> vaddCode)
>>>>> -    threeEqualRegInst("vpadd", "NVpaddD", "SimdAddOp",
>>>> unsignedTypes,
>>>>> +    threeEqualRegInst("vpadd", "NVpaddD", "SimdAddOp",
>>>> smallUnsignedTypes,
>>>>>                        2, vaddCode, pairwise=True)
>>>>> -    threeEqualRegInst("vpadd", "NVpaddQ", "SimdAddOp",
>>>> unsignedTypes,
>>>>> -                      4, vaddCode, pairwise=True)
>>>>>      vaddlwCode = '''
>>>>>          destElem = (BigElement)srcElem1 + (BigElement)srcElem2;
>>>>>      '''
>>>>> @@ -2113,11 +2111,9 @@
>>>>>      '''
>>>>>      threeRegLongInst("vmull", "Vmullp", "SimdMultOp",
>>>> smallUnsignedTypes, vmullpCode)
>>>>> -    threeEqualRegInst("vpmax", "VpmaxD", "SimdCmpOp", allTypes, 2,
>>>> vmaxCode, pairwise=True)
>>>>> -    threeEqualRegInst("vpmax", "VpmaxQ", "SimdCmpOp", allTypes, 4,
>>>> vmaxCode, pairwise=True)
>>>>> +    threeEqualRegInst("vpmax", "VpmaxD", "SimdCmpOp", smallTypes, 2,
>>>> vmaxCode, pairwise=True)
>>>>> -    threeEqualRegInst("vpmin", "VpminD", "SimdCmpOp", allTypes, 2,
>>>> vminCode, pairwise=True)
>>>>> -    threeEqualRegInst("vpmin", "VpminQ", "SimdCmpOp", allTypes, 4,
>>>> vminCode, pairwise=True)
>>>>> +    threeEqualRegInst("vpmin", "VpminD", "SimdCmpOp", smallTypes, 2,
>>>> vminCode, pairwise=True)
>>>>>      vqdmulhCode = '''
>>>>>          FPSCR fpscr = (FPSCR) FpscrQc;
>>>>> @@ -3140,8 +3136,10 @@
>>>>>              destReg.elements[i + 1] = mid;
>>>>>          }
>>>>>      '''
>>>>> -    twoRegMiscScramble("vtrn", "NVtrnD", "SimdAluOp",
>>>> unsignedTypes, 2,
>>>> vtrnCode)
>>>>> -    twoRegMiscScramble("vtrn", "NVtrnQ", "SimdAluOp",
>>>> unsignedTypes, 4,
>>>> vtrnCode)
>>>>> +    twoRegMiscScramble("vtrn", "NVtrnD", "SimdAluOp",
>>>>> +            smallUnsignedTypes, 2, vtrnCode)
>>>>> +    twoRegMiscScramble("vtrn", "NVtrnQ", "SimdAluOp",
>>>>> +            smallUnsignedTypes, 4, vtrnCode)
>>>>>
>>>>>      vuzpCode = '''
>>>>>          Element mid[eCount];
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07
>>>> src/arch/arm/isa/templates/mem.isa
>>>>> --- a/src/arch/arm/isa/templates/mem.isa      Sun Oct 30 15:57:39
>>>> 2011
>>>> -0500
>>>>> +++ b/src/arch/arm/isa/templates/mem.isa      Mon Oct 31 01:09:44
>>>> 2011
>>>> -0700
>>>>> @@ -1112,7 +1112,7 @@
>>>>>                   (IntRegIndex)_index)
>>>>>      {
>>>>>          %(constructor)s;
>>>>> -        bool conditional = false;
>>>>> +        bool conditional M5_VAR_USED = false;
>>>>>          if (!(condCode == COND_AL || condCode == COND_UC)) {
>>>>>              conditional = true;
>>>>>              for (int x = 0; x < _numDestRegs; x++) {
>>>>> @@ -1166,7 +1166,7 @@
>>>>>                   (IntRegIndex)_dest, (IntRegIndex)_base, _add, _imm)
>>>>>      {
>>>>>          %(constructor)s;
>>>>> -        bool conditional = false;
>>>>> +        bool conditional M5_VAR_USED = false;
>>>>>          if (!(condCode == COND_AL || condCode == COND_UC)) {
>>>>>              conditional = true;
>>>>>              for (int x = 0; x < _numDestRegs; x++) {
>>>>> diff -r dd77c8d0a93e -r 5fb918115c07 src/arch/mips/isa/decoder.isa
>>>>> --- a/src/arch/mips/isa/decoder.isa   Sun Oct 30 15:57:39 2011 -0500
>>>>> +++ b/src/arch/mips/isa/decoder.isa   Mon Oct 31 01:09:44 2011 -0700
>>>>> _______________________________________________
>>>>> gem5-dev mailing list
>>>>> [email protected]
>>>>> http://m5sim.org/mailman/listinfo/gem5-dev
>>>> _______________________________________________
>>>> gem5-dev mailing list
>>>> [email protected]
>>>> http://m5sim.org/mailman/listinfo/gem5-dev
>>>>
>>>>
>>> _______________________________________________
>>> gem5-dev mailing list
>>> [email protected]
>>> http://m5sim.org/mailman/listinfo/gem5-dev
>>>
>>
>> _______________________________________________
>> gem5-dev mailing list
>> [email protected]
>> http://m5sim.org/mailman/listinfo/gem5-dev
>
>
> _______________________________________________
> gem5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/gem5-dev

_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to