- if (is_Sync(pred)) {
- /* a Load after a Sync: move it up */
- set_Load_mem(load, get_Sync_pred(pred, 0));
- store = pred;
- }
- else {
- pload = skip_Proj(pred);
- if (is_Load(pload) && get_Load_volatility(pload) == volatility_non_volatile) {
- /* a Load after a Load: create a new Sync */
- set_Load_mem(load, get_Load_mem(pload));
-
- in[0] = pred;
- in[1] = store;
- store = new_Sync(2, in);
+ if (is_Sync(pred)) {
+ /* a Load after a Sync: move it up */
+ ir_node *mem = skip_Proj(get_Sync_pred(pred, 0));
+
+ set_Load_mem(load, get_memop_mem(mem));
+ add_Sync_pred(pred, store);
+ store = pred;
+ }
+ else {
+ pload = skip_Proj(pred);
+ if (is_Load(pload) && get_Load_volatility(pload) == volatility_non_volatile) {
+ /* a Load after a Load: create a new Sync */
+ set_Load_mem(load, get_Load_mem(pload));
+
+ in[0] = pred;
+ in[1] = store;
+ store = new_Sync(2, in);
+ }