Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(276)

Side by Side Diff: src/IceTargetLowering.cpp

Issue 490333003: Subzero: Fix address mode optimization involving phi temporaries. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review comments 1 Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceOperand.cpp ('k') | src/IceTargetLoweringX8632.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceTargetLowering.cpp - Basic lowering implementation --===// 1 //===- subzero/src/IceTargetLowering.cpp - Basic lowering 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 skeleton of the TargetLowering class, 10 // This file implements the skeleton of the TargetLowering class,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 // 129 //
130 // The lowering method may look ahead in the instruction stream as 130 // The lowering method may look ahead in the instruction stream as
131 // desired, and lower additional instructions in conjunction with the 131 // desired, and lower additional instructions in conjunction with the
132 // current one, for example fusing a compare and branch. If it does, 132 // current one, for example fusing a compare and branch. If it does,
133 // it should advance Context.Cur to point to the next non-deleted 133 // it should advance Context.Cur to point to the next non-deleted
134 // instruction to process, and it should delete any additional 134 // instruction to process, and it should delete any additional
135 // instructions it consumes. 135 // instructions it consumes.
136 void TargetLowering::lower() { 136 void TargetLowering::lower() {
137 assert(!Context.atEnd()); 137 assert(!Context.atEnd());
138 Inst *Inst = *Context.getCur(); 138 Inst *Inst = *Context.getCur();
139 // Mark the current instruction as deleted before lowering,
140 // otherwise the Dest variable will likely get marked as non-SSA.
141 // See Variable::setDefinition().
142 Inst->setDeleted();
139 switch (Inst->getKind()) { 143 switch (Inst->getKind()) {
140 case Inst::Alloca: 144 case Inst::Alloca:
141 lowerAlloca(llvm::dyn_cast<InstAlloca>(Inst)); 145 lowerAlloca(llvm::dyn_cast<InstAlloca>(Inst));
142 break; 146 break;
143 case Inst::Arithmetic: 147 case Inst::Arithmetic:
144 lowerArithmetic(llvm::dyn_cast<InstArithmetic>(Inst)); 148 lowerArithmetic(llvm::dyn_cast<InstArithmetic>(Inst));
145 break; 149 break;
146 case Inst::Assign: 150 case Inst::Assign:
147 lowerAssign(llvm::dyn_cast<InstAssign>(Inst)); 151 lowerAssign(llvm::dyn_cast<InstAssign>(Inst));
148 break; 152 break;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 break; 197 break;
194 case Inst::FakeDef: 198 case Inst::FakeDef:
195 case Inst::FakeUse: 199 case Inst::FakeUse:
196 case Inst::FakeKill: 200 case Inst::FakeKill:
197 case Inst::Target: 201 case Inst::Target:
198 // These are all Target instruction types and shouldn't be 202 // These are all Target instruction types and shouldn't be
199 // encountered at this stage. 203 // encountered at this stage.
200 Func->setError("Can't lower unsupported instruction type"); 204 Func->setError("Can't lower unsupported instruction type");
201 break; 205 break;
202 } 206 }
203 Inst->setDeleted();
204 207
205 postLower(); 208 postLower();
206 209
207 Context.advanceCur(); 210 Context.advanceCur();
208 Context.advanceNext(); 211 Context.advanceNext();
209 } 212 }
210 213
211 // Drives register allocation, allowing all physical registers (except 214 // Drives register allocation, allowing all physical registers (except
212 // perhaps for the frame pointer) to be allocated. This set of 215 // perhaps for the frame pointer) to be allocated. This set of
213 // registers could potentially be parameterized if we want to restrict 216 // registers could potentially be parameterized if we want to restrict
(...skipping 25 matching lines...) Expand all
239 if (Target == Target_ARM64) 242 if (Target == Target_ARM64)
240 return IceTargetGlobalInitARM64::create(Ctx); 243 return IceTargetGlobalInitARM64::create(Ctx);
241 #endif 244 #endif
242 llvm_unreachable("Unsupported target"); 245 llvm_unreachable("Unsupported target");
243 return NULL; 246 return NULL;
244 } 247 }
245 248
246 TargetGlobalInitLowering::~TargetGlobalInitLowering() {} 249 TargetGlobalInitLowering::~TargetGlobalInitLowering() {}
247 250
248 } // end of namespace Ice 251 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceOperand.cpp ('k') | src/IceTargetLoweringX8632.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698