mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-18 13:34:04 +00:00
[mips] [IAS] Enforce .set nomacro.
Summary: When used, ".set nomacro" causes warning messages to be reported when we expand pseudo-instructions to multiple machine instructions. Reviewers: dsanders Reviewed By: dsanders Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9564 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237366 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
23b0065f29
commit
e6f281a2ff
@ -1759,6 +1759,9 @@ bool MipsAsmParser::loadImmediate(int64_t ImmValue, unsigned DstReg,
|
||||
tmpInst.addOperand(MCOperand::createImm(ImmValue));
|
||||
Instructions.push_back(tmpInst);
|
||||
} else if ((ImmValue & 0xffffffff) == ImmValue) {
|
||||
if (!AssemblerOptions.back()->isMacro())
|
||||
Warning(IDLoc, "macro instruction expanded into multiple instructions");
|
||||
|
||||
// For all other values which are representable as a 32-bit integer:
|
||||
// li d,j => lui d,hi16(j)
|
||||
// ori d,d,lo16(j)
|
||||
@ -1779,6 +1782,8 @@ bool MipsAsmParser::loadImmediate(int64_t ImmValue, unsigned DstReg,
|
||||
Error(IDLoc, "instruction requires a 32-bit immediate");
|
||||
return true;
|
||||
}
|
||||
if (!AssemblerOptions.back()->isMacro())
|
||||
Warning(IDLoc, "macro instruction expanded into multiple instructions");
|
||||
|
||||
// <------- lo32 ------>
|
||||
// <------- hi32 ------>
|
||||
@ -1812,6 +1817,8 @@ bool MipsAsmParser::loadImmediate(int64_t ImmValue, unsigned DstReg,
|
||||
Error(IDLoc, "instruction requires a 32-bit immediate");
|
||||
return true;
|
||||
}
|
||||
if (!AssemblerOptions.back()->isMacro())
|
||||
Warning(IDLoc, "macro instruction expanded into multiple instructions");
|
||||
|
||||
// <------- hi32 ------> <------- lo32 ------>
|
||||
// <- hi16 -> <- lo16 ->
|
||||
@ -1914,6 +1921,9 @@ MipsAsmParser::expandLoadAddressImm(MCInst &Inst, bool Is32BitImm, SMLoc IDLoc,
|
||||
void MipsAsmParser::expandLoadAddressSym(
|
||||
const MCOperand &DstRegOp, const MCOperand &SymOp, bool Is32BitSym,
|
||||
SMLoc IDLoc, SmallVectorImpl<MCInst> &Instructions) {
|
||||
if (!AssemblerOptions.back()->isMacro())
|
||||
Warning(IDLoc, "macro instruction expanded into multiple instructions");
|
||||
|
||||
if (Is32BitSym && isABI_N64())
|
||||
Warning(IDLoc, "instruction loads the 32-bit address of a 64-bit symbol");
|
||||
|
||||
|
33
test/MC/Mips/set-nomacro-micromips.s
Normal file
33
test/MC/Mips/set-nomacro-micromips.s
Normal file
@ -0,0 +1,33 @@
|
||||
# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -mattr=micromips 2>&1 | FileCheck %s
|
||||
|
||||
.text
|
||||
.type main, @function
|
||||
.set micromips
|
||||
main:
|
||||
# CHECK-NOT: warning: macro instruction expanded into multiple instructions
|
||||
.set macro
|
||||
b 132
|
||||
b 1332
|
||||
b bar
|
||||
|
||||
lwm $16, $17, 8($sp)
|
||||
swm $16, $17, 8($sp)
|
||||
|
||||
add $4, $5, $6
|
||||
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
b 132
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
b 1332
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
b bar
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
|
||||
lwm $16, $17, 8($sp)
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
swm $16, $17, 8($sp)
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
|
||||
add $4, $5, $6
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
46
test/MC/Mips/set-nomacro.s
Normal file
46
test/MC/Mips/set-nomacro.s
Normal file
@ -0,0 +1,46 @@
|
||||
# RUN: llvm-mc %s -arch=mips -mcpu=mips32 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK-NOT: warning: macro instruction expanded into multiple instructions
|
||||
.set macro
|
||||
li $8, -16
|
||||
li $8, 16
|
||||
li $8, 161616
|
||||
|
||||
la $8, 16
|
||||
la $8, 161616
|
||||
la $8, 16($9)
|
||||
la $8, 161616($9)
|
||||
la $8, symbol
|
||||
|
||||
jal $25
|
||||
jal $4, $25
|
||||
|
||||
add $4, $5, $6
|
||||
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
li $8, -16
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
li $8, 16
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
li $8, 161616
|
||||
# CHECK: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
|
||||
la $8, 16
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
la $8, 161616
|
||||
# CHECK: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
la $8, 16($9)
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
la $8, 161616($9)
|
||||
# CHECK: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
la $8, symbol
|
||||
# CHECK: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
|
||||
jal $25
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
jal $4, $25
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
||||
|
||||
add $4, $5, $6
|
||||
# CHECK-NOT: [[@LINE-1]]:3: warning: macro instruction expanded into multiple instructions
|
Loading…
x
Reference in New Issue
Block a user