Tôi có followint LLVM IR tập tinXóa hướng dẫn đầu tiên trong khối cơ bản từ LLVM IR?
%1 = load i32* %i, align 4
%2 = load i32* %j, align 4
%3 = icmp sgt i32 %1, %2
br i1 %3, label %4, label %6
; <label>:4 ; preds = %0
%5 = load i32* %i, align 4
store i32 %5, i32* %k, align 4
br label %6
; <label>:6 ; preds = %5, %0
ret i32 0
Trong đó tôi đầu tiên tải vairable "i" trong% 1 và biến "j" trong% 2 sau đó tôi đang so sánh lớn hơn tình trạng đó là (i> j). Dựa trên đó có chi nhánh hoặc nhãn 4 hoặc nhãn 6. Vấn đề của tôi là có hai hướng dẫn tải cho biến "i" một trong khối cơ bản đầu tiên và khác trong khối cơ bản thứ 2. Ở đây tôi muốn loại bỏ hướng dẫn tải 2. Đối với nó tôi đang làm nó như khi tôi đạt đến hướng dẫn tải 2 cho biến "i" Tôi đang thay thế tất cả các sử dụng hướng dẫn thứ 2 bằng lệnh đầu tiên sau đó tôi xóa hướng dẫn hiện tại tức là thứ 2. Ở đây tôi không thể thiết lập con trỏ iterator hướng dẫn. Tôi không muốn đặt lệnh tiếp theo (lưu i32% 5, i32 *% k, căn chỉnh 4). Có cách nào khác không? Nếu bạn biết xin vui lòng cho tôi biết.
Không chắc chắn tôi hiểu câu hỏi của bạn. Nhưng tôi khá chắc chắn rằng những lần vượt qua tiếp theo sẽ có thể dễ dàng loại bỏ tải trọng đó cho bạn, vì vậy tôi sẽ không thực sự bận tâm. Nếu bạn có lý do thuyết phục để xóa tải, vui lòng đặt lại câu hỏi của bạn, vì tôi không thể hiểu được vấn đề của bạn thực sự là gì. – CAFxX
Vấn đề của tôi là sau khi xóa hướng dẫn tải thứ hai, tôi muốn đặt lệnh lặp như vậy trong lần lặp tiếp theo, nó sẽ đến (lưu i32% 5, i32 *% k, căn chỉnh 4) vì trong vòng lặp, tôi tăng trình chỉ lệnh . – damrudhard
Tại sao không đơn giản lấy một trình lặp mới bằng cách gọi 'BB-> begin()' một lần nữa ngay sau 'inst-> eraseFromParent()'? – CAFxX