[PATCH] D80691: Proposed fix for PR46114
Orlando Cazalet-Hyams via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu May 28 03:13:01 PDT 2020
Orlando added a project: debug-info.
Orlando added a comment.
Hi @helloqirun,
Thanks for working on this!
Assuming your IR is from the code you provided in your reproducer PR46114 [1],
compiled with clang at 709c52b9553 <https://reviews.llvm.org/rG709c52b9553f4ba83ab901a873392f8a7f2c56a5> (18 May 2020) I see this:
$ cat test.c
int a = 1;
short b;
char c;
int main() {
int d = a, l_52 = 0;
b = (l_52 = a) - c; // qirun0
if (d) {
int e=1;
}
}
$ clang test.c -O3 -g -mllvm -print-after-all
...
*** IR Dump After SROA *** // BEFORE EARLY CSE
; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 !dbg !17 {
entry:
%0 = load i32, i32* @a, align 4, !dbg !26, !tbaa !27
call void @llvm.dbg.value(metadata i32 %0, metadata !21, metadata !DIExpression()), !dbg !31
call void @llvm.dbg.value(metadata i32 0, metadata !22, metadata !DIExpression()), !dbg !31
%1 = load i32, i32* @a, align 4, !dbg !32, !tbaa !27
call void @llvm.dbg.value(metadata i32 %1, metadata !22, metadata !DIExpression()), !dbg !31
%2 = load i8, i8* @c, align 1, !dbg !33, !tbaa !34
%conv = sext i8 %2 to i32, !dbg !33
...
*** IR Dump After Early CSE ***
; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 !dbg !17 {
entry:
%0 = load i32, i32* @a, align 4, !dbg !26, !tbaa !27
call void @llvm.dbg.value(metadata i32 %0, metadata !21, metadata !DIExpression()), !dbg !31
call void @llvm.dbg.value(metadata i32 0, metadata !22, metadata !DIExpression()), !dbg !31
call void @llvm.dbg.value(metadata i32 %0, metadata !22, metadata !DIExpression()), !dbg !31
%1 = load i8, i8* @c, align 1, !dbg !32, !tbaa !33
%conv = sext i8 %1 to i32, !dbg !32
...
During EarlyCSE we detect that `%0 = load i32, i32* @a` is the same as
`%1 = load i32, i32* @a`, so the latter is removed. We rewrite the dbg.value
which uses %1 to use %0 instead, because %1 is being removed. IIUC this
behaviour in EarlyCSE looks correct, and makes me feel like the issue
comes from somewhere else?
[1] https://bugs.llvm.org/show_bug.cgi?id=46114
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D80691/new/
https://reviews.llvm.org/D80691
More information about the llvm-commits
mailing list