Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CodeGenPrepare] Don't split the store if it is volatile
We shouldn't split the store when it is volatile. Differential Revision: https://reviews.llvm.org/D61169 llvm-svn: 360228
- Loading branch information
QingShan Zhang
committed
May 8, 2019
1 parent
17dbb19
commit 0e71a6e
Showing
2 changed files
with
21 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
; Test that CodeGenPrepare respect the volatile flag when splitting a store. | ||
; | ||
; RUN: opt -S -codegenprepare -force-split-store < %s | FileCheck %s | ||
|
||
define void @fun(i16* %Src, i16* %Dst) { | ||
; CHECK: store volatile i16 %8, i16* %Dst | ||
%1 = load i16, i16* %Src | ||
%2 = trunc i16 %1 to i8 | ||
%3 = lshr i16 %1, 8 | ||
%4 = trunc i16 %3 to i8 | ||
%5 = zext i8 %2 to i16 | ||
%6 = zext i8 %4 to i16 | ||
%7 = shl nuw i16 %6, 8 | ||
%8 = or i16 %7, %5 | ||
store volatile i16 %8, i16* %Dst | ||
ret void | ||
} |