Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
llvm-epi-0.8
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
Roger Ferrer
llvm-epi-0.8
Commits
1c1568ed
Commit
1c1568ed
authored
21 years ago
by
Misha Brukman
Browse files
Options
Downloads
Patches
Plain Diff
Put all debug print statements under the DEBUG() guard to make output clean so
that tests can automatically diff the output. llvm-svn: 6642
parent
6940c864
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp
+36
-35
36 additions, 35 deletions
llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp
with
36 additions
and
35 deletions
llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp
+
36
−
35
View file @
1c1568ed
...
@@ -14,15 +14,15 @@
...
@@ -14,15 +14,15 @@
#include
"llvm/CodeGen/MachineInstr.h"
#include
"llvm/CodeGen/MachineInstr.h"
#include
"llvm/Target/TargetMachine.h"
#include
"llvm/Target/TargetMachine.h"
#include
"llvm/Target/TargetData.h"
#include
"llvm/Target/TargetData.h"
#include
"Support/Statistic.h"
#include
"Support/hash_set"
#include
"Support/hash_set"
#include
"SparcInternals.h"
#include
"SparcInternals.h"
#include
"SparcV9CodeEmitter.h"
#include
"SparcV9CodeEmitter.h"
bool
UltraSparc
::
addPassesToEmitMachineCode
(
PassManager
&
PM
,
bool
UltraSparc
::
addPassesToEmitMachineCode
(
PassManager
&
PM
,
MachineCodeEmitter
&
MCE
)
{
MachineCodeEmitter
&
MCE
)
{
//PM.add(new SparcV9CodeEmitter(MCE));
MachineCodeEmitter
*
M
=
&
MCE
;
//MachineCodeEmitter *M = MachineCodeEmitter::createDebugMachineCodeEmitter();
DEBUG
(
MachineCodeEmitter
::
createFilePrinterEmitter
(
MCE
));
MachineCodeEmitter
*
M
=
MachineCodeEmitter
::
createFilePrinterEmitter
(
MCE
);
PM
.
add
(
new
SparcV9CodeEmitter
(
*
this
,
*
M
));
PM
.
add
(
new
SparcV9CodeEmitter
(
*
this
,
*
M
));
PM
.
add
(
createMachineCodeDestructionPass
());
// Free stuff no longer needed
PM
.
add
(
createMachineCodeDestructionPass
());
// Free stuff no longer needed
return
false
;
return
false
;
...
@@ -182,7 +182,7 @@ uint64_t JITResolver::insertFarJumpAtAddr(int64_t Target, uint64_t Addr) {
...
@@ -182,7 +182,7 @@ uint64_t JITResolver::insertFarJumpAtAddr(int64_t Target, uint64_t Addr) {
void
JITResolver
::
CompilationCallback
()
{
void
JITResolver
::
CompilationCallback
()
{
uint64_t
CameFrom
=
(
uint64_t
)(
intptr_t
)
__builtin_return_address
(
0
);
uint64_t
CameFrom
=
(
uint64_t
)(
intptr_t
)
__builtin_return_address
(
0
);
int64_t
Target
=
(
int64_t
)
TheJITResolver
->
resolveFunctionReference
(
CameFrom
);
int64_t
Target
=
(
int64_t
)
TheJITResolver
->
resolveFunctionReference
(
CameFrom
);
std
::
cerr
<<
"In callback! Addr=0x"
<<
std
::
hex
<<
CameFrom
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"In callback! Addr=0x"
<<
std
::
hex
<<
CameFrom
<<
"
\n
"
)
;
// Rewrite the call target... so that we don't fault every time we execute
// Rewrite the call target... so that we don't fault every time we execute
// the call.
// the call.
...
@@ -275,8 +275,8 @@ void JITResolver::CompilationCallback() {
...
@@ -275,8 +275,8 @@ void JITResolver::CompilationCallback() {
uint64_t
JITResolver
::
emitStubForFunction
(
Function
*
F
)
{
uint64_t
JITResolver
::
emitStubForFunction
(
Function
*
F
)
{
MCE
.
startFunctionStub
(
*
F
,
6
);
MCE
.
startFunctionStub
(
*
F
,
6
);
std
::
cerr
<<
"Emitting stub at addr: 0x"
DEBUG
(
std
::
cerr
<<
"Emitting stub at addr: 0x"
<<
std
::
hex
<<
MCE
.
getCurrentPCValue
()
<<
"
\n
"
;
<<
std
::
hex
<<
MCE
.
getCurrentPCValue
()
<<
"
\n
"
)
;
unsigned
o6
=
SparcIntRegClass
::
o6
;
unsigned
o6
=
SparcIntRegClass
::
o6
;
// save %sp, -192, %sp
// save %sp, -192, %sp
...
@@ -289,7 +289,8 @@ uint64_t JITResolver::emitStubForFunction(Function *F) {
...
@@ -289,7 +289,8 @@ uint64_t JITResolver::emitStubForFunction(Function *F) {
int64_t
CallTarget
=
(
Addr
-
CurrPC
)
>>
2
;
int64_t
CallTarget
=
(
Addr
-
CurrPC
)
>>
2
;
if
(
CallTarget
>=
(
1
<<
30
)
||
CallTarget
<=
-
(
1
<<
30
))
{
if
(
CallTarget
>=
(
1
<<
30
)
||
CallTarget
<=
-
(
1
<<
30
))
{
std
::
cerr
<<
"Call target beyond 30 bit limit of CALL: "
<<
CallTarget
<<
"
\n
"
;
std
::
cerr
<<
"Call target beyond 30 bit limit of CALL: "
<<
CallTarget
<<
"
\n
"
;
abort
();
abort
();
}
}
// call CallTarget ;; invoke the callback
// call CallTarget ;; invoke the callback
...
@@ -403,30 +404,29 @@ int64_t SparcV9CodeEmitter::getMachineOpValue(MachineInstr &MI,
...
@@ -403,30 +404,29 @@ int64_t SparcV9CodeEmitter::getMachineOpValue(MachineInstr &MI,
// or things that get fixed up later by the JIT.
// or things that get fixed up later by the JIT.
if
(
MO
.
isVirtualRegister
())
{
if
(
MO
.
isVirtualRegister
())
{
std
::
cerr
<<
"ERROR: virtual register found in machine code.
\n
"
;
DEBUG
(
std
::
cerr
<<
"ERROR: virtual register found in machine code.
\n
"
)
;
abort
();
abort
();
}
else
if
(
MO
.
isPCRelativeDisp
())
{
}
else
if
(
MO
.
isPCRelativeDisp
())
{
std
::
cerr
<<
"PCRelativeDisp: "
;
DEBUG
(
std
::
cerr
<<
"PCRelativeDisp: "
)
;
Value
*
V
=
MO
.
getVRegValue
();
Value
*
V
=
MO
.
getVRegValue
();
if
(
BasicBlock
*
BB
=
dyn_cast
<
BasicBlock
>
(
V
))
{
if
(
BasicBlock
*
BB
=
dyn_cast
<
BasicBlock
>
(
V
))
{
std
::
cerr
<<
"Saving reference to BB (VReg)
\n
"
;
DEBUG
(
std
::
cerr
<<
"Saving reference to BB (VReg)
\n
"
)
;
unsigned
*
CurrPC
=
(
unsigned
*
)(
intptr_t
)
MCE
.
getCurrentPCValue
();
unsigned
*
CurrPC
=
(
unsigned
*
)(
intptr_t
)
MCE
.
getCurrentPCValue
();
BBRefs
.
push_back
(
std
::
make_pair
(
BB
,
std
::
make_pair
(
CurrPC
,
&
MI
)));
BBRefs
.
push_back
(
std
::
make_pair
(
BB
,
std
::
make_pair
(
CurrPC
,
&
MI
)));
}
else
if
(
const
Constant
*
C
=
dyn_cast
<
Constant
>
(
V
))
{
}
else
if
(
const
Constant
*
C
=
dyn_cast
<
Constant
>
(
V
))
{
if
(
ConstantMap
.
find
(
C
)
!=
ConstantMap
.
end
())
{
if
(
ConstantMap
.
find
(
C
)
!=
ConstantMap
.
end
())
{
rv
=
(
int64_t
)
MCE
.
getConstantPoolEntryAddress
(
ConstantMap
[
C
]);
rv
=
(
int64_t
)
MCE
.
getConstantPoolEntryAddress
(
ConstantMap
[
C
]);
std
::
cerr
<<
"const: 0x"
<<
std
::
hex
<<
rv
DEBUG
(
std
::
cerr
<<
"const: 0x"
<<
std
::
hex
<<
rv
<<
"
\n
"
);
<<
"
\n
"
<<
std
::
dec
;
}
else
{
}
else
{
std
::
cerr
<<
"ERROR: constant not in map:"
<<
MO
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"ERROR: constant not in map:"
<<
MO
<<
"
\n
"
)
;
abort
();
abort
();
}
}
}
else
if
(
GlobalValue
*
GV
=
dyn_cast
<
GlobalValue
>
(
V
))
{
}
else
if
(
GlobalValue
*
GV
=
dyn_cast
<
GlobalValue
>
(
V
))
{
// same as MO.isGlobalAddress()
// same as MO.isGlobalAddress()
std
::
cerr
<<
"GlobalValue: "
;
DEBUG
(
std
::
cerr
<<
"GlobalValue: "
)
;
// external function calls, etc.?
// external function calls, etc.?
if
(
Function
*
F
=
dyn_cast
<
Function
>
(
GV
))
{
if
(
Function
*
F
=
dyn_cast
<
Function
>
(
GV
))
{
std
::
cerr
<<
"Function: "
;
DEBUG
(
std
::
cerr
<<
"Function: "
)
;
if
(
F
->
isExternal
())
{
if
(
F
->
isExternal
())
{
// Sparc backend broken: this MO should be `ExternalSymbol'
// Sparc backend broken: this MO should be `ExternalSymbol'
rv
=
(
int64_t
)
MCE
.
getGlobalValueAddress
(
F
->
getName
());
rv
=
(
int64_t
)
MCE
.
getGlobalValueAddress
(
F
->
getName
());
...
@@ -434,31 +434,30 @@ int64_t SparcV9CodeEmitter::getMachineOpValue(MachineInstr &MI,
...
@@ -434,31 +434,30 @@ int64_t SparcV9CodeEmitter::getMachineOpValue(MachineInstr &MI,
rv
=
(
int64_t
)
MCE
.
getGlobalValueAddress
(
F
);
rv
=
(
int64_t
)
MCE
.
getGlobalValueAddress
(
F
);
}
}
if
(
rv
==
0
)
{
if
(
rv
==
0
)
{
std
::
cerr
<<
"not yet generated
\n
"
;
DEBUG
(
std
::
cerr
<<
"not yet generated
\n
"
)
;
// Function has not yet been code generated!
// Function has not yet been code generated!
TheJITResolver
->
addFunctionReference
(
MCE
.
getCurrentPCValue
(),
F
);
TheJITResolver
->
addFunctionReference
(
MCE
.
getCurrentPCValue
(),
F
);
// Delayed resolution...
// Delayed resolution...
rv
=
TheJITResolver
->
getLazyResolver
(
F
);
rv
=
TheJITResolver
->
getLazyResolver
(
F
);
}
else
{
}
else
{
std
::
cerr
<<
"already generated: 0x"
<<
std
::
hex
<<
rv
<<
"
\n
"
DEBUG
(
std
::
cerr
<<
"already generated: 0x"
<<
std
::
hex
<<
rv
<<
"
\n
"
);
<<
std
::
dec
;
}
}
}
else
{
}
else
{
std
::
cerr
<<
"not a function: "
<<
*
GV
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"not a function: "
<<
*
GV
<<
"
\n
"
)
;
abort
();
abort
();
}
}
// The real target of the call is Addr = PC + (rv * 4)
// The real target of the call is Addr = PC + (rv * 4)
// So undo that: give the instruction (Addr - PC) / 4
// So undo that: give the instruction (Addr - PC) / 4
if
(
MI
.
getOpcode
()
==
V9
::
CALL
)
{
if
(
MI
.
getOpcode
()
==
V9
::
CALL
)
{
int64_t
CurrPC
=
MCE
.
getCurrentPCValue
();
int64_t
CurrPC
=
MCE
.
getCurrentPCValue
();
std
::
cerr
<<
"rv addr: 0x"
<<
std
::
hex
<<
rv
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"rv addr: 0x"
<<
std
::
hex
<<
rv
<<
"
\n
"
std
::
cerr
<<
"curr PC: 0x"
<<
CurrPC
<<
"
\n
"
;
<<
"curr PC: 0x"
<<
CurrPC
<<
"
\n
"
)
;
rv
=
(
rv
-
CurrPC
)
>>
2
;
rv
=
(
rv
-
CurrPC
)
>>
2
;
if
(
rv
>=
(
1
<<
29
)
||
rv
<=
-
(
1
<<
29
))
{
if
(
rv
>=
(
1
<<
29
)
||
rv
<=
-
(
1
<<
29
))
{
std
::
cerr
<<
"addr out of bounds for the 30-bit call: "
<<
rv
<<
"
\n
"
;
std
::
cerr
<<
"addr out of bounds for the 30-bit call: "
<<
rv
<<
"
\n
"
;
abort
();
abort
();
}
}
std
::
cerr
<<
"returning addr: 0x"
<<
rv
<<
"
\n
"
<<
std
::
dec
;
DEBUG
(
std
::
cerr
<<
"returning addr: 0x"
<<
rv
<<
"
\n
"
)
;
}
}
}
else
{
}
else
{
std
::
cerr
<<
"ERROR: PC relative disp unhandled:"
<<
MO
<<
"
\n
"
;
std
::
cerr
<<
"ERROR: PC relative disp unhandled:"
<<
MO
<<
"
\n
"
;
...
@@ -477,21 +476,21 @@ int64_t SparcV9CodeEmitter::getMachineOpValue(MachineInstr &MI,
...
@@ -477,21 +476,21 @@ int64_t SparcV9CodeEmitter::getMachineOpValue(MachineInstr &MI,
// Find the real register number for use in an instruction
// Find the real register number for use in an instruction
/////realReg = getRealRegNum(fakeReg, regClass, MI);
/////realReg = getRealRegNum(fakeReg, regClass, MI);
realReg
=
getRealRegNum
(
fakeReg
,
regType
,
MI
);
realReg
=
getRealRegNum
(
fakeReg
,
regType
,
MI
);
std
::
cerr
<<
MO
<<
": Reg["
<<
std
::
dec
<<
fakeReg
<<
"] = "
DEBUG
(
std
::
cerr
<<
MO
<<
": Reg["
<<
std
::
dec
<<
fakeReg
<<
"] = "
<<
realReg
<<
"
\n
"
;
<<
realReg
<<
"
\n
"
)
;
rv
=
realReg
;
rv
=
realReg
;
}
else
if
(
MO
.
isImmediate
())
{
}
else
if
(
MO
.
isImmediate
())
{
rv
=
MO
.
getImmedValue
();
rv
=
MO
.
getImmedValue
();
std
::
cerr
<<
"immed: "
<<
rv
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"immed: "
<<
rv
<<
"
\n
"
)
;
}
else
if
(
MO
.
isGlobalAddress
())
{
}
else
if
(
MO
.
isGlobalAddress
())
{
std
::
cerr
<<
"GlobalAddress: not PC-relative
\n
"
;
DEBUG
(
std
::
cerr
<<
"GlobalAddress: not PC-relative
\n
"
)
;
rv
=
(
int64_t
)
rv
=
(
int64_t
)
(
intptr_t
)
getGlobalAddress
(
cast
<
GlobalValue
>
(
MO
.
getVRegValue
()),
(
intptr_t
)
getGlobalAddress
(
cast
<
GlobalValue
>
(
MO
.
getVRegValue
()),
MI
,
MO
.
isPCRelative
());
MI
,
MO
.
isPCRelative
());
}
else
if
(
MO
.
isMachineBasicBlock
())
{
}
else
if
(
MO
.
isMachineBasicBlock
())
{
// Duplicate code of the above case for VirtualRegister, BasicBlock...
// Duplicate code of the above case for VirtualRegister, BasicBlock...
// It should really hit this case, but Sparc backend uses VRegs instead
// It should really hit this case, but Sparc backend uses VRegs instead
std
::
cerr
<<
"Saving reference to MBB
\n
"
;
DEBUG
(
std
::
cerr
<<
"Saving reference to MBB
\n
"
)
;
BasicBlock
*
BB
=
MO
.
getMachineBasicBlock
()
->
getBasicBlock
();
BasicBlock
*
BB
=
MO
.
getMachineBasicBlock
()
->
getBasicBlock
();
unsigned
*
CurrPC
=
(
unsigned
*
)(
intptr_t
)
MCE
.
getCurrentPCValue
();
unsigned
*
CurrPC
=
(
unsigned
*
)(
intptr_t
)
MCE
.
getCurrentPCValue
();
BBRefs
.
push_back
(
std
::
make_pair
(
BB
,
std
::
make_pair
(
CurrPC
,
&
MI
)));
BBRefs
.
push_back
(
std
::
make_pair
(
BB
,
std
::
make_pair
(
CurrPC
,
&
MI
)));
...
@@ -537,9 +536,9 @@ unsigned SparcV9CodeEmitter::getValueBit(int64_t Val, unsigned bit) {
...
@@ -537,9 +536,9 @@ unsigned SparcV9CodeEmitter::getValueBit(int64_t Val, unsigned bit) {
bool
SparcV9CodeEmitter
::
runOnMachineFunction
(
MachineFunction
&
MF
)
{
bool
SparcV9CodeEmitter
::
runOnMachineFunction
(
MachineFunction
&
MF
)
{
MCE
.
startFunction
(
MF
);
MCE
.
startFunction
(
MF
);
std
::
cerr
<<
"Starting function "
<<
MF
.
getFunction
()
->
getName
()
DEBUG
(
std
::
cerr
<<
"Starting function "
<<
MF
.
getFunction
()
->
getName
()
<<
", address: "
<<
"0x"
<<
std
::
hex
<<
", address: "
<<
"0x"
<<
std
::
hex
<<
(
long
)
MCE
.
getCurrentPCValue
()
<<
"
\n
"
;
<<
(
long
)
MCE
.
getCurrentPCValue
()
<<
"
\n
"
)
;
// The Sparc backend does not use MachineConstantPool;
// The Sparc backend does not use MachineConstantPool;
// instead, it has its own constant pool implementation.
// instead, it has its own constant pool implementation.
...
@@ -551,7 +550,8 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
...
@@ -551,7 +550,8 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
{
{
Constant
*
C
=
(
Constant
*
)
*
I
;
Constant
*
C
=
(
Constant
*
)
*
I
;
unsigned
idx
=
MCP
.
getConstantPoolIndex
(
C
);
unsigned
idx
=
MCP
.
getConstantPoolIndex
(
C
);
std
::
cerr
<<
"Mapping constant 0x"
<<
(
intptr_t
)
C
<<
" to "
<<
idx
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"Mapping constant 0x"
<<
(
intptr_t
)
C
<<
" to "
<<
idx
<<
"
\n
"
);
ConstantMap
[
C
]
=
idx
;
ConstantMap
[
C
]
=
idx
;
}
}
MCE
.
emitConstantPool
(
&
MCP
);
MCE
.
emitConstantPool
(
&
MCP
);
...
@@ -560,14 +560,15 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
...
@@ -560,14 +560,15 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
emitBasicBlock
(
*
I
);
emitBasicBlock
(
*
I
);
MCE
.
finishFunction
(
MF
);
MCE
.
finishFunction
(
MF
);
std
::
cerr
<<
"Finishing function "
<<
MF
.
getFunction
()
->
getName
()
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"Finishing function "
<<
MF
.
getFunction
()
->
getName
()
<<
"
\n
"
);
ConstantMap
.
clear
();
ConstantMap
.
clear
();
for
(
unsigned
i
=
0
,
e
=
BBRefs
.
size
();
i
!=
e
;
++
i
)
{
for
(
unsigned
i
=
0
,
e
=
BBRefs
.
size
();
i
!=
e
;
++
i
)
{
long
Location
=
BBLocations
[
BBRefs
[
i
].
first
];
long
Location
=
BBLocations
[
BBRefs
[
i
].
first
];
unsigned
*
Ref
=
BBRefs
[
i
].
second
.
first
;
unsigned
*
Ref
=
BBRefs
[
i
].
second
.
first
;
MachineInstr
*
MI
=
BBRefs
[
i
].
second
.
second
;
MachineInstr
*
MI
=
BBRefs
[
i
].
second
.
second
;
std
::
cerr
<<
"Fixup @"
<<
std
::
hex
<<
Ref
<<
" to "
<<
Location
DEBUG
(
std
::
cerr
<<
"Fixup @"
<<
std
::
hex
<<
Ref
<<
" to "
<<
Location
<<
" in instr: "
<<
std
::
dec
<<
*
MI
<<
"
\n
"
;
<<
" in instr: "
<<
std
::
dec
<<
*
MI
<<
"
\n
"
)
;
}
}
// Resolve branches to BasicBlocks for the entire function
// Resolve branches to BasicBlocks for the entire function
...
@@ -575,7 +576,7 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
...
@@ -575,7 +576,7 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
long
Location
=
BBLocations
[
BBRefs
[
i
].
first
];
long
Location
=
BBLocations
[
BBRefs
[
i
].
first
];
unsigned
*
Ref
=
BBRefs
[
i
].
second
.
first
;
unsigned
*
Ref
=
BBRefs
[
i
].
second
.
first
;
MachineInstr
*
MI
=
BBRefs
[
i
].
second
.
second
;
MachineInstr
*
MI
=
BBRefs
[
i
].
second
.
second
;
std
::
cerr
<<
"attempting to resolve BB: "
<<
i
<<
"
\n
"
;
DEBUG
(
std
::
cerr
<<
"attempting to resolve BB: "
<<
i
<<
"
\n
"
)
;
for
(
unsigned
ii
=
0
,
ee
=
MI
->
getNumOperands
();
ii
!=
ee
;
++
ii
)
{
for
(
unsigned
ii
=
0
,
ee
=
MI
->
getNumOperands
();
ii
!=
ee
;
++
ii
)
{
MachineOperand
&
op
=
MI
->
getOperand
(
ii
);
MachineOperand
&
op
=
MI
->
getOperand
(
ii
);
if
(
op
.
isPCRelativeDisp
())
{
if
(
op
.
isPCRelativeDisp
())
{
...
@@ -596,7 +597,7 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
...
@@ -596,7 +597,7 @@ bool SparcV9CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
else
if
(
hiBits32
)
{
MI
->
setOperandHi32
(
ii
);
}
else
if
(
hiBits32
)
{
MI
->
setOperandHi32
(
ii
);
}
else
if
(
loBits64
)
{
MI
->
setOperandLo64
(
ii
);
}
else
if
(
loBits64
)
{
MI
->
setOperandLo64
(
ii
);
}
else
if
(
hiBits64
)
{
MI
->
setOperandHi64
(
ii
);
}
else
if
(
hiBits64
)
{
MI
->
setOperandHi64
(
ii
);
}
std
::
cerr
<<
"Rewrote BB ref: "
;
DEBUG
(
std
::
cerr
<<
"Rewrote BB ref: "
)
;
unsigned
fixedInstr
=
SparcV9CodeEmitter
::
getBinaryCodeForInstr
(
*
MI
);
unsigned
fixedInstr
=
SparcV9CodeEmitter
::
getBinaryCodeForInstr
(
*
MI
);
*
Ref
=
fixedInstr
;
*
Ref
=
fixedInstr
;
break
;
break
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment