OLD | NEW |
1 //===- subzero/src/IceOperand.cpp - High-level operand implementation -----===// | 1 //===- subzero/src/IceOperand.cpp - High-level operand implementation -----===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file implements the Operand class and its target-independent | 10 // This file implements the Operand class and its target-independent |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 return NULL; // conservative answer | 420 return NULL; // conservative answer |
421 SizeT VarNum = Var->getIndex(); | 421 SizeT VarNum = Var->getIndex(); |
422 return Metadata[VarNum].getNode(); | 422 return Metadata[VarNum].getNode(); |
423 } | 423 } |
424 | 424 |
425 const InstDefList VariablesMetadata::NoDefinitions; | 425 const InstDefList VariablesMetadata::NoDefinitions; |
426 | 426 |
427 // ======================== dump routines ======================== // | 427 // ======================== dump routines ======================== // |
428 | 428 |
429 void Variable::emit(const Cfg *Func) const { | 429 void Variable::emit(const Cfg *Func) const { |
430 Func->getTarget()->emitVariable(this); | 430 if (ALLOW_DUMP) |
| 431 Func->getTarget()->emitVariable(this); |
431 } | 432 } |
432 | 433 |
433 void Variable::dump(const Cfg *Func, Ostream &Str) const { | 434 void Variable::dump(const Cfg *Func, Ostream &Str) const { |
| 435 if (!ALLOW_DUMP) |
| 436 return; |
434 if (Func == NULL) { | 437 if (Func == NULL) { |
435 Str << "%" << getName(); | 438 Str << "%" << getName(); |
436 return; | 439 return; |
437 } | 440 } |
438 if (Func->getContext()->isVerbose(IceV_RegOrigins) || | 441 if (Func->getContext()->isVerbose(IceV_RegOrigins) || |
439 (!hasReg() && !Func->getTarget()->hasComputedFrame())) | 442 (!hasReg() && !Func->getTarget()->hasComputedFrame())) |
440 Str << "%" << getName(); | 443 Str << "%" << getName(); |
441 if (hasReg()) { | 444 if (hasReg()) { |
442 if (Func->getContext()->isVerbose(IceV_RegOrigins)) | 445 if (Func->getContext()->isVerbose(IceV_RegOrigins)) |
443 Str << ":"; | 446 Str << ":"; |
444 Str << Func->getTarget()->getRegName(RegNum, getType()); | 447 Str << Func->getTarget()->getRegName(RegNum, getType()); |
445 } else if (Func->getTarget()->hasComputedFrame()) { | 448 } else if (Func->getTarget()->hasComputedFrame()) { |
446 if (Func->getContext()->isVerbose(IceV_RegOrigins)) | 449 if (Func->getContext()->isVerbose(IceV_RegOrigins)) |
447 Str << ":"; | 450 Str << ":"; |
448 Str << "[" << Func->getTarget()->getRegName( | 451 Str << "[" << Func->getTarget()->getRegName( |
449 Func->getTarget()->getFrameOrStackReg(), IceType_i32); | 452 Func->getTarget()->getFrameOrStackReg(), IceType_i32); |
450 int32_t Offset = getStackOffset(); | 453 int32_t Offset = getStackOffset(); |
451 if (Offset) { | 454 if (Offset) { |
452 if (Offset > 0) | 455 if (Offset > 0) |
453 Str << "+"; | 456 Str << "+"; |
454 Str << Offset; | 457 Str << Offset; |
455 } | 458 } |
456 Str << "]"; | 459 Str << "]"; |
457 } | 460 } |
458 } | 461 } |
459 | 462 |
460 void ConstantRelocatable::emitWithoutDollar(GlobalContext *Ctx) const { | 463 void ConstantRelocatable::emitWithoutDollar(GlobalContext *Ctx) const { |
| 464 if (!ALLOW_DUMP) |
| 465 return; |
461 Ostream &Str = Ctx->getStrEmit(); | 466 Ostream &Str = Ctx->getStrEmit(); |
462 if (SuppressMangling) | 467 if (SuppressMangling) |
463 Str << Name; | 468 Str << Name; |
464 else | 469 else |
465 Str << Ctx->mangleName(Name); | 470 Str << Ctx->mangleName(Name); |
466 if (Offset) { | 471 if (Offset) { |
467 if (Offset > 0) | 472 if (Offset > 0) |
468 Str << "+"; | 473 Str << "+"; |
469 Str << Offset; | 474 Str << Offset; |
470 } | 475 } |
471 } | 476 } |
472 | 477 |
473 void ConstantRelocatable::emit(GlobalContext *Ctx) const { | 478 void ConstantRelocatable::emit(GlobalContext *Ctx) const { |
| 479 if (!ALLOW_DUMP) |
| 480 return; |
474 Ostream &Str = Ctx->getStrEmit(); | 481 Ostream &Str = Ctx->getStrEmit(); |
475 Str << "$"; | 482 Str << "$"; |
476 emitWithoutDollar(Ctx); | 483 emitWithoutDollar(Ctx); |
477 } | 484 } |
478 | 485 |
479 void ConstantRelocatable::dump(const Cfg *Func, Ostream &Str) const { | 486 void ConstantRelocatable::dump(const Cfg *Func, Ostream &Str) const { |
| 487 if (!ALLOW_DUMP) |
| 488 return; |
480 Str << "@"; | 489 Str << "@"; |
481 if (Func && !SuppressMangling) { | 490 if (Func && !SuppressMangling) { |
482 Str << Func->getContext()->mangleName(Name); | 491 Str << Func->getContext()->mangleName(Name); |
483 } else { | 492 } else { |
484 Str << Name; | 493 Str << Name; |
485 } | 494 } |
486 if (Offset) | 495 if (Offset) |
487 Str << "+" << Offset; | 496 Str << "+" << Offset; |
488 } | 497 } |
489 | 498 |
490 void LiveRange::dump(Ostream &Str) const { | 499 void LiveRange::dump(Ostream &Str) const { |
| 500 if (!ALLOW_DUMP) |
| 501 return; |
491 Str << "(weight=" << Weight << ") "; | 502 Str << "(weight=" << Weight << ") "; |
492 bool First = true; | 503 bool First = true; |
493 for (const RangeElementType &I : Range) { | 504 for (const RangeElementType &I : Range) { |
494 if (!First) | 505 if (!First) |
495 Str << ", "; | 506 Str << ", "; |
496 First = false; | 507 First = false; |
497 Str << "[" << I.first << ":" << I.second << ")"; | 508 Str << "[" << I.first << ":" << I.second << ")"; |
498 } | 509 } |
499 } | 510 } |
500 | 511 |
501 Ostream &operator<<(Ostream &Str, const LiveRange &L) { | 512 Ostream &operator<<(Ostream &Str, const LiveRange &L) { |
| 513 if (!ALLOW_DUMP) |
| 514 return Str; |
502 L.dump(Str); | 515 L.dump(Str); |
503 return Str; | 516 return Str; |
504 } | 517 } |
505 | 518 |
506 Ostream &operator<<(Ostream &Str, const RegWeight &W) { | 519 Ostream &operator<<(Ostream &Str, const RegWeight &W) { |
| 520 if (!ALLOW_DUMP) |
| 521 return Str; |
507 if (W.getWeight() == RegWeight::Inf) | 522 if (W.getWeight() == RegWeight::Inf) |
508 Str << "Inf"; | 523 Str << "Inf"; |
509 else | 524 else |
510 Str << W.getWeight(); | 525 Str << W.getWeight(); |
511 return Str; | 526 return Str; |
512 } | 527 } |
513 | 528 |
514 } // end of namespace Ice | 529 } // end of namespace Ice |
OLD | NEW |