mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[GlobalOpt] Explicitly set alignment of bool load/store operations.
This commit is contained in:
parent
d860270d6d
commit
7c3c1c915e
@ -919,7 +919,7 @@ OptimizeGlobalAddressOfMalloc(GlobalVariable *GV, CallInst *CI, Type *AllocTy,
|
||||
if (StoreInst *SI = dyn_cast<StoreInst>(GV->user_back())) {
|
||||
// The global is initialized when the store to it occurs.
|
||||
new StoreInst(ConstantInt::getTrue(GV->getContext()), InitBool, false,
|
||||
None, SI->getOrdering(), SI->getSyncScopeID(), SI);
|
||||
Align(1), SI->getOrdering(), SI->getSyncScopeID(), SI);
|
||||
SI->eraseFromParent();
|
||||
continue;
|
||||
}
|
||||
@ -936,7 +936,7 @@ OptimizeGlobalAddressOfMalloc(GlobalVariable *GV, CallInst *CI, Type *AllocTy,
|
||||
// Replace the cmp X, 0 with a use of the bool value.
|
||||
// Sink the load to where the compare was, if atomic rules allow us to.
|
||||
Value *LV = new LoadInst(InitBool->getValueType(), InitBool,
|
||||
InitBool->getName() + ".val", false, None,
|
||||
InitBool->getName() + ".val", false, Align(1),
|
||||
LI->getOrdering(), LI->getSyncScopeID(),
|
||||
LI->isUnordered() ? (Instruction *)ICI : LI);
|
||||
InitBoolUsed = true;
|
||||
@ -1743,7 +1743,7 @@ static bool TryToShrinkGlobalToBoolean(GlobalVariable *GV, Constant *OtherVal) {
|
||||
assert(LI->getOperand(0) == GV && "Not a copy!");
|
||||
// Insert a new load, to preserve the saved value.
|
||||
StoreVal = new LoadInst(NewGV->getValueType(), NewGV,
|
||||
LI->getName() + ".b", false, None,
|
||||
LI->getName() + ".b", false, Align(1),
|
||||
LI->getOrdering(), LI->getSyncScopeID(), LI);
|
||||
} else {
|
||||
assert((isa<CastInst>(StoredVal) || isa<SelectInst>(StoredVal)) &&
|
||||
@ -1753,14 +1753,14 @@ static bool TryToShrinkGlobalToBoolean(GlobalVariable *GV, Constant *OtherVal) {
|
||||
}
|
||||
}
|
||||
StoreInst *NSI =
|
||||
new StoreInst(StoreVal, NewGV, false, None, SI->getOrdering(),
|
||||
new StoreInst(StoreVal, NewGV, false, Align(1), SI->getOrdering(),
|
||||
SI->getSyncScopeID(), SI);
|
||||
NSI->setDebugLoc(SI->getDebugLoc());
|
||||
} else {
|
||||
// Change the load into a load of bool then a select.
|
||||
LoadInst *LI = cast<LoadInst>(UI);
|
||||
LoadInst *NLI = new LoadInst(NewGV->getValueType(), NewGV,
|
||||
LI->getName() + ".b", false, None,
|
||||
LI->getName() + ".b", false, Align(1),
|
||||
LI->getOrdering(), LI->getSyncScopeID(), LI);
|
||||
Instruction *NSI;
|
||||
if (IsOneZero)
|
||||
|
@ -11,8 +11,8 @@ entry:
|
||||
|
||||
;CHECK: @bar
|
||||
;CHECK-NEXT: entry:
|
||||
;CHECK-NEXT: store i1 true, i1* @foo, !dbg ![[DbgLocStore:[0-9]+]]
|
||||
;CHECK-NEXT: %.b = load i1, i1* @foo, !dbg ![[DbgLocLoadSel:[0-9]+]]
|
||||
;CHECK-NEXT: store i1 true, i1* @foo, align 1, !dbg ![[DbgLocStore:[0-9]+]]
|
||||
;CHECK-NEXT: %.b = load i1, i1* @foo, align 1, !dbg ![[DbgLocLoadSel:[0-9]+]]
|
||||
;CHECK-NEXT: %0 = select i1 %.b, i32 5, i32 0, !dbg ![[DbgLocLoadSel]]
|
||||
;CHECK-NEXT: call void @llvm.dbg.value({{.*}}), !dbg ![[DbgLocLoadSel]]
|
||||
;CHECK-NEXT: ret i32 %0, !dbg ![[DbgLocRet:[0-9]+]]
|
||||
|
Loading…
Reference in New Issue
Block a user