Index: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp =================================================================== --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp @@ -21,9 +21,8 @@ MipsMCAsmInfo::MipsMCAsmInfo(const Triple &TheTriple) { IsLittleEndian = TheTriple.isLittleEndian(); - if (TheTriple.isMIPS64()) { + if (TheTriple.isMIPS64() && TheTriple.getEnvironment() != Triple::GNUABIN32) CodePointerSize = CalleeSaveStackSlotSize = 8; - } // FIXME: This condition isn't quite right but it's the best we can do until // this object can identify the ABI. It will misbehave when using O32 Index: llvm/trunk/test/MC/Mips/ptr-size.s =================================================================== --- llvm/trunk/test/MC/Mips/ptr-size.s +++ llvm/trunk/test/MC/Mips/ptr-size.s @@ -0,0 +1,13 @@ +# RUN: llvm-mc -filetype=obj -triple mips--gnu -g %s \ +# RUN: | llvm-dwarfdump -debug-info - | FileCheck --check-prefix=O32 %s +# RUN: llvm-mc -filetype=obj -triple mips64--gnuabin32 -g %s \ +# RUN: | llvm-dwarfdump -debug-info - | FileCheck --check-prefix=N32 %s +# RUN: llvm-mc -filetype=obj -triple mips64--gnuabi64 -g %s \ +# RUN: | llvm-dwarfdump -debug-info - | FileCheck --check-prefix=N64 %s + +# O32: addr_size = 0x04 +# N32: addr_size = 0x04 +# N64: addr_size = 0x08 + +foo: + nop