From 3e704d00ddacae1d6928c9f54d79940ffa256f0d Mon Sep 17 00:00:00 2001 From: Bjorn Pettersson Date: Fri, 20 Sep 2019 12:13:12 +0000 Subject: [PATCH] [AMDGPU] Use std::make_tuple to make some toolchains happy again My toolchain stopped working (LLVM 8.0 , libstdc++ 5.4.0) after r372338. The same problem was seen in clang-cuda-build buildbots: clang-cuda-build/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp:763:12: error: chosen constructor is explicit in copy-initialization return {Reg, 0, nullptr}; ^~~~~~~~~~~~~~~~~ /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here constexpr tuple(_UElements&&... __elements) ^ This commit adds explicit calls to std::make_tuple to work around the problem. llvm-svn: 372384 --- lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp b/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp index 73486b969f4..103ca2a7e99 100644 --- a/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp +++ b/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp @@ -760,7 +760,7 @@ static std::tuple getBaseWithConstantOffset(MachineRegisterInfo &MRI, Register Reg) { MachineInstr *Def = getDefIgnoringCopies(Reg, MRI); if (!Def) - return {Reg, 0, nullptr}; + return std::make_tuple(Reg, 0, nullptr); if (Def->getOpcode() == AMDGPU::G_CONSTANT) { unsigned Offset; @@ -770,21 +770,21 @@ getBaseWithConstantOffset(MachineRegisterInfo &MRI, Register Reg) { else Offset = Op.getCImm()->getZExtValue(); - return {Register(), Offset, Def}; + return std::make_tuple(Register(), Offset, Def); } int64_t Offset; if (Def->getOpcode() == AMDGPU::G_ADD) { // TODO: Handle G_OR used for add case if (mi_match(Def->getOperand(1).getReg(), MRI, m_ICst(Offset))) - return {Def->getOperand(0).getReg(), Offset, Def}; + return std::make_tuple(Def->getOperand(0).getReg(), Offset, Def); // FIXME: matcher should ignore copies if (mi_match(Def->getOperand(1).getReg(), MRI, m_Copy(m_ICst(Offset)))) - return {Def->getOperand(0).getReg(), Offset, Def}; + return std::make_tuple(Def->getOperand(0).getReg(), Offset, Def); } - return {Reg, 0, Def}; + return std::make_tuple(Reg, 0, Def); } static unsigned getBufferStoreOpcode(LLT Ty, @@ -931,7 +931,7 @@ AMDGPUInstructionSelector::splitBufferOffsets(MachineIRBuilder &B, B.setInsertPt(OldMBB, OldInsPt); } - return {BaseReg, ImmOffset, TotalConstOffset}; + return std::make_tuple(BaseReg, ImmOffset, TotalConstOffset); } bool AMDGPUInstructionSelector::selectStoreIntrinsic(MachineInstr &MI,