mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-27 04:18:42 +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:
1 parent
23b0065f29
commit
e6f281a2ff
3 files changed
+89
No files matched your search
@@ -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");
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user