@@ -275,8 +275,8 @@ define i32 @foo(i32 %arg) {
275
275
sandboxir::Instruction *Add1 = &*It++;
276
276
sandboxir::Instruction *Ret = &*It++;
277
277
278
+ // Check moveBefore(Instruction *) with tracking enabled.
278
279
Ctx.save ();
279
- // Check moveBefore() with tracking enabled.
280
280
Add1->moveBefore (Add0);
281
281
It = BB->begin ();
282
282
EXPECT_EQ (&*It++, Add1);
@@ -305,4 +305,66 @@ define i32 @foo(i32 %arg) {
305
305
EXPECT_EQ (&*It++, Add1);
306
306
EXPECT_EQ (&*It++, Ret);
307
307
EXPECT_EQ (It, BB->end ());
308
+
309
+ // Check moveBefore(BasicBlock &, BasicBlock::iterator) with tracking enabled.
310
+ Ctx.save ();
311
+ Add1->moveBefore (*BB, Add0->getIterator ());
312
+ It = BB->begin ();
313
+ EXPECT_EQ (&*It++, Add1);
314
+ EXPECT_EQ (&*It++, Add0);
315
+ EXPECT_EQ (&*It++, Ret);
316
+ EXPECT_EQ (It, BB->end ());
317
+ // Check revert().
318
+ Ctx.revert ();
319
+ It = BB->begin ();
320
+ EXPECT_EQ (&*It++, Add0);
321
+ EXPECT_EQ (&*It++, Add1);
322
+ EXPECT_EQ (&*It++, Ret);
323
+ EXPECT_EQ (It, BB->end ());
324
+
325
+ // Same for the last instruction in the block.
326
+ Ctx.save ();
327
+ Ret->moveBefore (*BB, Add0->getIterator ());
328
+ It = BB->begin ();
329
+ EXPECT_EQ (&*It++, Ret);
330
+ EXPECT_EQ (&*It++, Add0);
331
+ EXPECT_EQ (&*It++, Add1);
332
+ EXPECT_EQ (It, BB->end ());
333
+ Ctx.revert ();
334
+ It = BB->begin ();
335
+ EXPECT_EQ (&*It++, Add0);
336
+ EXPECT_EQ (&*It++, Add1);
337
+ EXPECT_EQ (&*It++, Ret);
338
+ EXPECT_EQ (It, BB->end ());
339
+
340
+ // Check moveAfter(Instruction *) with tracking enabled.
341
+ Ctx.save ();
342
+ Add0->moveAfter (Add1);
343
+ It = BB->begin ();
344
+ EXPECT_EQ (&*It++, Add1);
345
+ EXPECT_EQ (&*It++, Add0);
346
+ EXPECT_EQ (&*It++, Ret);
347
+ EXPECT_EQ (It, BB->end ());
348
+ // Check revert().
349
+ Ctx.revert ();
350
+ It = BB->begin ();
351
+ EXPECT_EQ (&*It++, Add0);
352
+ EXPECT_EQ (&*It++, Add1);
353
+ EXPECT_EQ (&*It++, Ret);
354
+ EXPECT_EQ (It, BB->end ());
355
+
356
+ // Same for the last instruction in the block.
357
+ Ctx.save ();
358
+ Ret->moveAfter (Add0);
359
+ It = BB->begin ();
360
+ EXPECT_EQ (&*It++, Add0);
361
+ EXPECT_EQ (&*It++, Ret);
362
+ EXPECT_EQ (&*It++, Add1);
363
+ EXPECT_EQ (It, BB->end ());
364
+ Ctx.revert ();
365
+ It = BB->begin ();
366
+ EXPECT_EQ (&*It++, Add0);
367
+ EXPECT_EQ (&*It++, Add1);
368
+ EXPECT_EQ (&*It++, Ret);
369
+ EXPECT_EQ (It, BB->end ());
308
370
}
0 commit comments