llvm.org GIT mirror llvm / 683e922
Make LLVM Assembly dramatically easier to read by aligning the comments, using formatted_raw_ostream's PadToColumn. Before: bb1: ; preds = %bb %2 = sext i32 %i.01 to i64 ; <i64> [#uses=1] %3 = getelementptr double* %p, i64 %2 ; <double*> [#uses=1] %4 = load double* %3, align 8 ; <double> [#uses=1] %5 = fmul double %4, 1.100000e+00 ; <double> [#uses=1] %6 = sext i32 %i.01 to i64 ; <i64> [#uses=1] %7 = getelementptr double* %p, i64 %6 ; <double*> [#uses=1] After: bb1: ; preds = %bb %2 = sext i32 %i.01 to i64 ; <i64> [#uses=1] %3 = getelementptr double* %p, i64 %2 ; <double*> [#uses=1] %4 = load double* %3, align 8 ; <double> [#uses=1] %5 = fmul double %4, 1.100000e+00 ; <double> [#uses=1] %6 = sext i32 %i.01 to i64 ; <i64> [#uses=1] %7 = getelementptr double* %p, i64 %6 ; <double*> [#uses=1] Several tests required whitespace adjustments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78816 91177308-0d34-0410-b5e6-96231b3b80d8 Dan Gohman 10 years ago
10 changed file(s) with 169 addition(s) and 157 deletion(s). Raw diff Collapse all Expand all
3333 #include "llvm/Support/CFG.h"
3434 #include "llvm/Support/ErrorHandling.h"
3535 #include "llvm/Support/MathExtras.h"
36 #include "llvm/Support/raw_ostream.h"
36 #include "llvm/Support/FormattedStream.h"
3737 #include
3838 #include
3939 #include
6565
6666 // PrintEscapedString - Print each character of the specified string, escaping
6767 // it if it is not printable or if it is an escape char.
68 static void PrintEscapedString(const StringRef &Name, raw_ostream &Out) {
68 static void PrintEscapedString(const StringRef &Name,
69 formatted_raw_ostream &Out) {
6970 for (unsigned i = 0, e = Name.size(); i != e; ++i) {
7071 unsigned char C = Name[i];
7172 if (isprint(C) && C != '\\' && C != '"')
8586 /// PrintLLVMName - Turn the specified name into an 'LLVM name', which is either
8687 /// prefixed with % (if the string only contains simple characters) or is
8788 /// surrounded with ""'s (if it has special chars in it). Print it out.
88 static void PrintLLVMName(raw_ostream &OS, const StringRef &Name,
89 static void PrintLLVMName(formatted_raw_ostream &OS, const StringRef &Name,
8990 PrefixType Prefix) {
9091 assert(Name.data() && "Cannot get empty name!");
9192 switch (Prefix) {
124125 /// PrintLLVMName - Turn the specified name into an 'LLVM name', which is either
125126 /// prefixed with % (if the string only contains simple characters) or is
126127 /// surrounded with ""'s (if it has special chars in it). Print it out.
127 static void PrintLLVMName(raw_ostream &OS, const Value *V) {
128 static void PrintLLVMName(formatted_raw_ostream &OS, const Value *V) {
128129 PrintLLVMName(OS, V->getName(),
129130 isa(V) ? GlobalPrefix : LocalPrefix);
130131 }
424425
425426 // Get the name as a string and insert it into TypeNames.
426427 std::string NameStr;
427 raw_string_ostream NameOS(NameStr);
428 raw_string_ostream NameROS(NameStr);
429 formatted_raw_ostream NameOS(NameROS);
428430 PrintLLVMName(NameOS, TI->first, LocalPrefix);
429 TP.addTypeName(Ty, NameOS.str());
431 NameOS.flush();
432 TP.addTypeName(Ty, NameStr);
430433 }
431434
432435 // Walk the entire module to find references to unnamed structure and opaque
813816 // AsmWriter Implementation
814817 //===----------------------------------------------------------------------===//
815818
816 static void WriteAsOperandInternal(raw_ostream &Out, const Value *V,
819 static void WriteAsOperandInternal(formatted_raw_ostream &Out, const Value *V,
817820 TypePrinting &TypePrinter,
818821 SlotTracker *Machine);
819822
852855 return pred;
853856 }
854857
855 static void WriteMDNodes(raw_ostream &Out, TypePrinting &TypePrinter,
858 static void WriteMDNodes(formatted_raw_ostream &Out, TypePrinting &TypePrinter,
856859 SlotTracker &Machine) {
857860 SmallVector Nodes;
858861 Nodes.resize(Machine.mdnSize());
885888 }
886889 }
887890
888 static void WriteOptimizationInfo(raw_ostream &Out, const User *U) {
891 static void WriteOptimizationInfo(formatted_raw_ostream &Out, const User *U) {
889892 if (const OverflowingBinaryOperator *OBO =
890893 dyn_cast(U)) {
891894 if (OBO->hasNoUnsignedOverflow())
901904 }
902905 }
903906
904 static void WriteConstantInt(raw_ostream &Out, const Constant *CV,
907 static void WriteConstantInt(formatted_raw_ostream &Out, const Constant *CV,
905908 TypePrinting &TypePrinter, SlotTracker *Machine) {
906909 if (const ConstantInt *CI = dyn_cast(CV)) {
907910 if (CI->getType() == Type::Int1Ty) {
11421145 /// ostream. This can be useful when you just want to print int %reg126, not
11431146 /// the whole instruction that generated it.
11441147 ///
1145 static void WriteAsOperandInternal(raw_ostream &Out, const Value *V,
1148 static void WriteAsOperandInternal(formatted_raw_ostream &Out, const Value *V,
11461149 TypePrinting &TypePrinter,
11471150 SlotTracker *Machine) {
11481151 if (V->hasName()) {
12321235 Out << ' ';
12331236 }
12341237
1235 WriteAsOperandInternal(Out, V, TypePrinter, 0);
1238 formatted_raw_ostream FOut(Out);
1239 WriteAsOperandInternal(FOut, V, TypePrinter, 0);
12361240 }
12371241
12381242
12391243 namespace {
12401244
12411245 class AssemblyWriter {
1242 raw_ostream &Out;
1246 formatted_raw_ostream &Out;
12431247 SlotTracker &Machine;
12441248 const Module *TheModule;
12451249 TypePrinting TypePrinter;
12501254 std::map MDNodes;
12511255 unsigned MetadataIDNo;
12521256 public:
1253 inline AssemblyWriter(raw_ostream &o, SlotTracker &Mac, const Module *M,
1257 inline AssemblyWriter(formatted_raw_ostream &o, SlotTracker &Mac,
1258 const Module *M,
12541259 AssemblyAnnotationWriter *AAW)
12551260 : Out(o), Machine(Mac), TheModule(M), AnnotationWriter(AAW), MetadataIDNo(0) {
12561261 AddModuleTypesToPrinter(TypePrinter, NumberedTypes, M);
14021407 WriteMDNodes(Out, TypePrinter, Machine);
14031408 }
14041409
1405 static void PrintLinkage(GlobalValue::LinkageTypes LT, raw_ostream &Out) {
1410 static void PrintLinkage(GlobalValue::LinkageTypes LT,
1411 formatted_raw_ostream &Out) {
14061412 switch (LT) {
14071413 case GlobalValue::ExternalLinkage: break;
14081414 case GlobalValue::PrivateLinkage: Out << "private "; break;
14271433
14281434
14291435 static void PrintVisibility(GlobalValue::VisibilityTypes Vis,
1430 raw_ostream &Out) {
1436 formatted_raw_ostream &Out) {
14311437 switch (Vis) {
14321438 default: llvm_unreachable("Invalid visibility style!");
14331439 case GlobalValue::DefaultVisibility: break;
15181524 // Make sure we print out at least one level of the type structure, so
15191525 // that we do not get %2 = type %2
15201526 TypePrinter.printAtLeastOneLevel(NumberedTypes[i], Out);
1521 Out << "\t\t; type %" << i << '\n';
1527 Out.PadToColumn(50);
1528 Out << "; type %" << i << '\n';
15221529 }
15231530
15241531 // Print the named types.
16671674 Out << "";
16681675 }
16691676
1670 if (BB->getParent() == 0)
1671 Out << "\t\t; Error: Block without parent!";
1672 else if (BB != &BB->getParent()->getEntryBlock()) { // Not the entry block?
1677 if (BB->getParent() == 0) {
1678 Out.PadToColumn(50);
1679 Out << "; Error: Block without parent!";
1680 } else if (BB != &BB->getParent()->getEntryBlock()) { // Not the entry block?
16731681 // Output predecessors for the block...
1674 Out << "\t\t;";
1682 Out.PadToColumn(50);
1683 Out << ";";
16751684 pred_const_iterator PI = pred_begin(BB), PE = pred_end(BB);
16761685
16771686 if (PI == PE) {
17051714 ///
17061715 void AssemblyWriter::printInfoComment(const Value &V) {
17071716 if (V.getType() != Type::VoidTy) {
1708 Out << "\t\t; <";
1717 Out.PadToColumn(50);
1718 Out << "; <";
17091719 TypePrinter.print(V.getType(), Out);
17101720 Out << '>';
17111721
19902000 raw_os_ostream OS(o);
19912001 print(OS, AAW);
19922002 }
1993 void Module::print(raw_ostream &OS, AssemblyAnnotationWriter *AAW) const {
2003 void Module::print(raw_ostream &ROS, AssemblyAnnotationWriter *AAW) const {
19942004 SlotTracker SlotTable(this);
2005 formatted_raw_ostream OS(ROS);
19952006 AssemblyWriter W(OS, SlotTable, this, AAW);
19962007 W.write(this);
19972008 }
20092020 TypePrinting().print(this, OS);
20102021 }
20112022
2012 void Value::print(raw_ostream &OS, AssemblyAnnotationWriter *AAW) const {
2023 void Value::print(raw_ostream &ROS, AssemblyAnnotationWriter *AAW) const {
2024 formatted_raw_ostream OS(ROS);
20132025 if (this == 0) {
20142026 OS << "printing a value\n";
20152027 return;
0 ; RUN: llvm-as < %s | opt -indvars | llvm-dis > %t
11 ; RUN: grep select %t | count 2
2 ; RUN: grep {icmp ne i32.\* %w } %t
2 ; RUN: grep {icmp ne i32.\* %w } %t
33
44 ; Indvars should be able to insert a canonical induction variable
55 ; for the bb6 loop without using a maximum calculation (icmp, select)
0 ; ModuleID = ''
1 @b = constant i15 0 ; [#uses=0]
2 @c = constant i15 -2 ; [#uses=0]
3 @d = constant i15 0 ; [#uses=0]
4 @e = constant i15 -1 ; [#uses=0]
5 @f = constant i15 1 ; [#uses=0]
6 @g = constant i15 3 ; [#uses=0]
7 @h = constant i15 undef ; [#uses=0]
8 @i = constant i15 -16384 ; [#uses=0]
9 @j = constant i15 1 ; [#uses=0]
10 @l = constant i15 -1 ; [#uses=0]
11 @n = constant i15 -2 ; [#uses=0]
12 @q = constant i15 16381 ; [#uses=0]
13 @r = constant i15 0 ; [#uses=0]
14 @s = constant i15 2 ; [#uses=0]
15 @t = constant i15 1 ; [#uses=0]
16 @u = constant i15 0 ; [#uses=0]
17 @o = constant i15 0 ; [#uses=0]
18 @p = constant i15 -1 ; [#uses=0]
19 @v = constant i15 -1 ; [#uses=0]
1 @b = constant i15 0 ; [#uses=0]
2 @c = constant i15 -2 ; [#uses=0]
3 @d = constant i15 0 ; [#uses=0]
4 @e = constant i15 -1 ; [#uses=0]
5 @f = constant i15 1 ; [#uses=0]
6 @g = constant i15 3 ; [#uses=0]
7 @h = constant i15 undef ; [#uses=0]
8 @i = constant i15 -16384 ; [#uses=0]
9 @j = constant i15 1 ; [#uses=0]
10 @l = constant i15 -1 ; [#uses=0]
11 @n = constant i15 -2 ; [#uses=0]
12 @q = constant i15 16381 ; [#uses=0]
13 @r = constant i15 0 ; [#uses=0]
14 @s = constant i15 2 ; [#uses=0]
15 @t = constant i15 1 ; [#uses=0]
16 @u = constant i15 0 ; [#uses=0]
17 @o = constant i15 0 ; [#uses=0]
18 @p = constant i15 -1 ; [#uses=0]
19 @v = constant i15 -1 ; [#uses=0]
0 ; ModuleID = ''
1 @b = constant i17 0 ; [#uses=0]
2 @c = constant i17 -2 ; [#uses=0]
3 @d = constant i17 0 ; [#uses=0]
4 @e = constant i17 -1 ; [#uses=0]
5 @f = constant i17 1 ; [#uses=0]
6 @g = constant i17 3 ; [#uses=0]
7 @h = constant i17 undef ; [#uses=0]
8 @i = constant i17 -65536 ; [#uses=0]
9 @j = constant i17 1 ; [#uses=0]
10 @l = constant i17 -1 ; [#uses=0]
11 @n = constant i17 -2 ; [#uses=0]
12 @q = constant i17 0 ; [#uses=0]
13 @r = constant i17 2 ; [#uses=0]
14 @s = constant i17 1 ; [#uses=0]
15 @t = constant i17 0 ; [#uses=0]
16 @o = constant i17 0 ; [#uses=0]
17 @p = constant i17 -1 ; [#uses=0]
18 @v = constant i17 -1 ; [#uses=0]
1 @b = constant i17 0 ; [#uses=0]
2 @c = constant i17 -2 ; [#uses=0]
3 @d = constant i17 0 ; [#uses=0]
4 @e = constant i17 -1 ; [#uses=0]
5 @f = constant i17 1 ; [#uses=0]
6 @g = constant i17 3 ; [#uses=0]
7 @h = constant i17 undef ; [#uses=0]
8 @i = constant i17 -65536 ; [#uses=0]
9 @j = constant i17 1 ; [#uses=0]
10 @l = constant i17 -1 ; [#uses=0]
11 @n = constant i17 -2 ; [#uses=0]
12 @q = constant i17 0 ; [#uses=0]
13 @r = constant i17 2 ; [#uses=0]
14 @s = constant i17 1 ; [#uses=0]
15 @t = constant i17 0 ; [#uses=0]
16 @o = constant i17 0 ; [#uses=0]
17 @p = constant i17 -1 ; [#uses=0]
18 @v = constant i17 -1 ; [#uses=0]
0 ; ModuleID = ''
1 @b = constant i31 0 ; [#uses=0]
2 @c = constant i31 -2 ; [#uses=0]
3 @d = constant i31 0 ; [#uses=0]
4 @e = constant i31 -1 ; [#uses=0]
5 @f = constant i31 1 ; [#uses=0]
6 @g = constant i31 3 ; [#uses=0]
7 @h = constant i31 undef ; [#uses=0]
8 @i = constant i31 -1073741824 ; [#uses=0]
9 @j = constant i31 1 ; [#uses=0]
10 @l = constant i31 -1 ; [#uses=0]
11 @n = constant i31 -2 ; [#uses=0]
12 @q = constant i31 0 ; [#uses=0]
13 @r = constant i31 2 ; [#uses=0]
14 @s = constant i31 1 ; [#uses=0]
15 @t = constant i31 0 ; [#uses=0]
16 @o = constant i31 0 ; [#uses=0]
17 @p = constant i31 -1 ; [#uses=0]
18 @u = constant i31 -3 ; [#uses=0]
1 @b = constant i31 0 ; [#uses=0]
2 @c = constant i31 -2 ; [#uses=0]
3 @d = constant i31 0 ; [#uses=0]
4 @e = constant i31 -1 ; [#uses=0]
5 @f = constant i31 1 ; [#uses=0]
6 @g = constant i31 3 ; [#uses=0]
7 @h = constant i31 undef ; [#uses=0]
8 @i = constant i31 -1073741824 ; [#uses=0]
9 @j = constant i31 1 ; [#uses=0]
10 @l = constant i31 -1 ; [#uses=0]
11 @n = constant i31 -2 ; [#uses=0]
12 @q = constant i31 0 ; [#uses=0]
13 @r = constant i31 2 ; [#uses=0]
14 @s = constant i31 1 ; [#uses=0]
15 @t = constant i31 0 ; [#uses=0]
16 @o = constant i31 0 ; [#uses=0]
17 @p = constant i31 -1 ; [#uses=0]
18 @u = constant i31 -3 ; [#uses=0]
0 ; ModuleID = ''
1 @b = constant i33 0 ; [#uses=0]
2 @c = constant i33 -2 ; [#uses=0]
3 @d = constant i33 0 ; [#uses=0]
4 @e = constant i33 -1 ; [#uses=0]
5 @f = constant i33 1 ; [#uses=0]
6 @g = constant i33 3 ; [#uses=0]
7 @h = constant i33 undef ; [#uses=0]
8 @i = constant i33 -4294967296 ; [#uses=0]
9 @j = constant i33 1 ; [#uses=0]
10 @l = constant i33 -1 ; [#uses=0]
11 @n = constant i33 -2 ; [#uses=0]
12 @q = constant i33 0 ; [#uses=0]
13 @r = constant i33 2 ; [#uses=0]
14 @s = constant i33 1 ; [#uses=0]
15 @t = constant i33 0 ; [#uses=0]
16 @o = constant i33 0 ; [#uses=0]
17 @p = constant i33 -1 ; [#uses=0]
18 @u = constant i33 -1 ; [#uses=0]
1 @b = constant i33 0 ; [#uses=0]
2 @c = constant i33 -2 ; [#uses=0]
3 @d = constant i33 0 ; [#uses=0]
4 @e = constant i33 -1 ; [#uses=0]
5 @f = constant i33 1 ; [#uses=0]
6 @g = constant i33 3 ; [#uses=0]
7 @h = constant i33 undef ; [#uses=0]
8 @i = constant i33 -4294967296 ; [#uses=0]
9 @j = constant i33 1 ; [#uses=0]
10 @l = constant i33 -1 ; [#uses=0]
11 @n = constant i33 -2 ; [#uses=0]
12 @q = constant i33 0 ; [#uses=0]
13 @r = constant i33 2 ; [#uses=0]
14 @s = constant i33 1 ; [#uses=0]
15 @t = constant i33 0 ; [#uses=0]
16 @o = constant i33 0 ; [#uses=0]
17 @p = constant i33 -1 ; [#uses=0]
18 @u = constant i33 -1 ; [#uses=0]
0 ; ModuleID = ''
1 @b = constant i63 0 ; [#uses=0]
2 @c = constant i63 -2 ; [#uses=0]
3 @d = constant i63 0 ; [#uses=0]
4 @e = constant i63 -1 ; [#uses=0]
5 @f = constant i63 1 ; [#uses=0]
6 @g = constant i63 3 ; [#uses=0]
7 @h = constant i63 undef ; [#uses=0]
8 @i = constant i63 -4611686018427387904 ; [#uses=0]
9 @j = constant i63 1 ; [#uses=0]
10 @l = constant i63 -1 ; [#uses=0]
11 @n = constant i63 -2 ; [#uses=0]
12 @q = constant i63 0 ; [#uses=0]
13 @u = constant i63 -1 ; [#uses=0]
14 @r = constant i63 2 ; [#uses=0]
15 @s = constant i63 1 ; [#uses=0]
16 @t = constant i63 0 ; [#uses=0]
17 @o = constant i63 0 ; [#uses=0]
18 @p = constant i63 -1 ; [#uses=0]
1 @b = constant i63 0 ; [#uses=0]
2 @c = constant i63 -2 ; [#uses=0]
3 @d = constant i63 0 ; [#uses=0]
4 @e = constant i63 -1 ; [#uses=0]
5 @f = constant i63 1 ; [#uses=0]
6 @g = constant i63 3 ; [#uses=0]
7 @h = constant i63 undef ; [#uses=0]
8 @i = constant i63 -4611686018427387904 ; [#uses=0]
9 @j = constant i63 1 ; [#uses=0]
10 @l = constant i63 -1 ; [#uses=0]
11 @n = constant i63 -2 ; [#uses=0]
12 @q = constant i63 0 ; [#uses=0]
13 @u = constant i63 -1 ; [#uses=0]
14 @r = constant i63 2 ; [#uses=0]
15 @s = constant i63 1 ; [#uses=0]
16 @t = constant i63 0 ; [#uses=0]
17 @o = constant i63 0 ; [#uses=0]
18 @p = constant i63 -1 ; [#uses=0]
0 ; ModuleID = ''
1 @b = constant i7 0 ; [#uses=0]
2 @q = constant i7 63 ; [#uses=0]
3 @c = constant i7 -2 ; [#uses=0]
4 @d = constant i7 0 ; [#uses=0]
5 @e = constant i7 -1 ; [#uses=0]
6 @f = constant i7 1 ; [#uses=0]
7 @g = constant i7 3 ; [#uses=0]
8 @r = constant i7 5 ; [#uses=0]
9 @s = constant i7 5 ; [#uses=0]
10 @h = constant i7 undef ; [#uses=0]
11 @i = constant i7 -64 ; [#uses=0]
12 @j = constant i7 1 ; [#uses=0]
13 @l = constant i7 -1 ; [#uses=0]
14 @m2 = constant i7 -1 ; [#uses=0]
15 @n = constant i7 -2 ; [#uses=0]
16 @t = constant i7 -2 ; [#uses=0]
17 @u = constant i7 -64 ; [#uses=0]
18 @v = constant i7 0 ; [#uses=0]
19 @w = constant i7 2 ; [#uses=0]
20 @x = constant i7 1 ; [#uses=0]
21 @y = constant i7 0 ; [#uses=0]
22 @o = constant i7 0 ; [#uses=0]
23 @p = constant i7 -1 ; [#uses=0]
1 @b = constant i7 0 ; [#uses=0]
2 @q = constant i7 63 ; [#uses=0]
3 @c = constant i7 -2 ; [#uses=0]
4 @d = constant i7 0 ; [#uses=0]
5 @e = constant i7 -1 ; [#uses=0]
6 @f = constant i7 1 ; [#uses=0]
7 @g = constant i7 3 ; [#uses=0]
8 @r = constant i7 5 ; [#uses=0]
9 @s = constant i7 5 ; [#uses=0]
10 @h = constant i7 undef ; [#uses=0]
11 @i = constant i7 -64 ; [#uses=0]
12 @j = constant i7 1 ; [#uses=0]
13 @l = constant i7 -1 ; [#uses=0]
14 @m2 = constant i7 -1 ; [#uses=0]
15 @n = constant i7 -2 ; [#uses=0]
16 @t = constant i7 -2 ; [#uses=0]
17 @u = constant i7 -64 ; [#uses=0]
18 @v = constant i7 0 ; [#uses=0]
19 @w = constant i7 2 ; [#uses=0]
20 @x = constant i7 1 ; [#uses=0]
21 @y = constant i7 0 ; [#uses=0]
22 @o = constant i7 0 ; [#uses=0]
23 @p = constant i7 -1 ; [#uses=0]
0 ; ModuleID = ''
1 @b = constant i9 0 ; [#uses=0]
2 @c = constant i9 -2 ; [#uses=0]
3 @d = constant i9 0 ; [#uses=0]
4 @e = constant i9 -1 ; [#uses=0]
5 @f = constant i9 1 ; [#uses=0]
6 @g = constant i9 3 ; [#uses=0]
7 @h = constant i9 undef ; [#uses=0]
8 @i = constant i9 -256 ; [#uses=0]
9 @j = constant i9 1 ; [#uses=0]
10 @l = constant i9 -1 ; [#uses=0]
11 @n = constant i9 -2 ; [#uses=0]
12 @q = constant i9 0 ; [#uses=0]
13 @r = constant i9 255 ; [#uses=0]
14 @s = constant i9 0 ; [#uses=0]
15 @t = constant i9 1 ; [#uses=0]
16 @o = constant i9 0 ; [#uses=0]
17 @p = constant i9 -1 ; [#uses=0]
1 @b = constant i9 0 ; [#uses=0]
2 @c = constant i9 -2 ; [#uses=0]
3 @d = constant i9 0 ; [#uses=0]
4 @e = constant i9 -1 ; [#uses=0]
5 @f = constant i9 1 ; [#uses=0]
6 @g = constant i9 3 ; [#uses=0]
7 @h = constant i9 undef ; [#uses=0]
8 @i = constant i9 -256 ; [#uses=0]
9 @j = constant i9 1 ; [#uses=0]
10 @l = constant i9 -1 ; [#uses=0]
11 @n = constant i9 -2 ; [#uses=0]
12 @q = constant i9 0 ; [#uses=0]
13 @r = constant i9 255 ; [#uses=0]
14 @s = constant i9 0 ; [#uses=0]
15 @t = constant i9 1 ; [#uses=0]
16 @o = constant i9 0 ; [#uses=0]
17 @p = constant i9 -1 ; [#uses=0]
None ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep {= or i32 %x, -5 }
0 ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep {= or i32 %x, -5 }
11
22 @.str = internal constant [5 x i8] c"foo\0A\00" ; <[5 x i8]*> [#uses=1]
33 @.str1 = internal constant [5 x i8] c"bar\0A\00" ; <[5 x i8]*> [#uses=1]