Displaying 4 results from an estimated 4 matches for "checker_thread_begin".
2018 Feb 09
1
PHI nodes for atomic variables
...ecifically, why instruction *%3* relates to a *MemoryDef*. According to
my understanding,
I think *%3* should be related to a *MemoryUse*, right?
; Function Attrs: uwtable
define void @_Z2f1v() #3 personality i32 (...)* @__gxx_personality_v0 {
entry:
; 1 = MemoryDef(liveOnEntry)
tail call void @checker_thread_begin(i8* getelementptr inbounds ([3 x
i8], [3 x i8]* @.str, i64 0, i64 0))
; MemoryUse(1)
%0 = load i32, i32* @data1, align 4, !tbaa !1
%cmp = icmp sgt i32 %0, 0
br i1 %cmp, label %if.then, label %entry.if.end_crit_edge
entry.if.end_crit_edge: ; preds = %entry
; MemoryUs...
2018 Feb 08
2
PHI nodes for atomic variables
...int data1, data2, data3, data4;
std::atomic<int> x;
void f1()
{
if (data1 > 0) {
x = data4;
data2 = data4;
}
data3 = data2;
data1 = x;
}
; Function Attrs: uwtable
define void @_Z2f1v() #3 personality i32 (...)* @__gxx_personality_v0 {
tail call void @checker_thread_begin(i8* getelementptr inbounds ([3 x
i8], [3 x i8]* @.str, i64 0, i64 0))
%1 = load i32, i32* @data1, align 4, !tbaa !1
%2 = icmp sgt i32 %1, 0
br i1 %2, label %5, label %3
; <label>:3: ; preds = %0
%4 = load i32, i32* @data2, align 4, !tbaa !1
br l...
2018 Feb 08
0
PHI nodes for atomic variables
Let me try to help.
On Thu, Feb 8, 2018 at 12:13 PM, Qiuping Yi via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Thanks for your explanation.
>
> Do you mean that LLVM will not maintain the def-use chain for atomic
> variables?
>
It is not a variable at the LLVM level.
At the source level, it is a variable.
At the LLVM IR level, it is lowered into memory operations.
All
2018 Feb 08
3
PHI nodes for atomic variables
Thanks for your explanation.
Do you mean that LLVM will not maintain the def-use chain for atomic
variables?
So it is impossible to directly catch the fact that the load of x at the
statement 'data1 = x; ' dependents on data4 (because of the statement
x=data4 )?
If I want to get such information, may be the only solution is to traverse
all the predecessors of the statement 'data1 =