-
Notifications
You must be signed in to change notification settings - Fork 182
Closed
Labels
good first issueGood for newcomersGood for newcomershelp wantedExtra attention is neededExtra attention is needed
Description
For the following code, clangir seems to generate code that departures from existing CodeGen:
struct T {
struct {
long a[16];
long b;
};
int c;
};
void opaque(T*);
void foo(T t) {
opaque(&t);
}Expected:
%struct.T = type { %struct.anon, i32 }
%struct.anon = type { [20 x i64], i64 }
define dso_local void @foo(T)(ptr noundef byval(%struct.T) align 8 %t) {
entry:
call void @opaque(T*)(ptr noundef %t)
ret void
}
declare void @opaque(T*)(ptr noundef) #1
Actual
%struct.T = type { %struct.anon.1, i32 }
%struct.anon.1 = type { [20 x i64], i64 }
declare void @_Z6opaqueP1T(ptr)
define void @_Z3foo1T(%struct.T %0) {
%2 = alloca %struct.T, i64 1, align 8
store %struct.T %0, ptr %2, align 8
call void @_Z6opaqueP1T(ptr %2)
ret void
}
bcardosolopes
Metadata
Metadata
Assignees
Labels
good first issueGood for newcomersGood for newcomershelp wantedExtra attention is neededExtra attention is needed