ftynse added inline comments.
================
Comment at: clang/test/OpenMP/parallel_codegen.cpp:139
// CHECK: call {{.*}}void (%struct.ident_t*, i32, void (i32*, i32*,
...)*, ...) @__kmpc_fork_call(%struct.ident_t* [[DEF_LOC_2]], i32 2, void
(i32*, i32*, ...)* bitcast (void (i32*, i32*, i8***, i{{64|32}})*
[[OMP_OUTLINED:@.+]] to void (i32*, i32*, ...)*), i8*** [[ARGC_ADDR]],
i{{64|32}} %{{.+}})
-// IRBUILDER: call {{.*}}void (%struct.ident_t*, i32, void (i32*, i32*,
...)*, ...) @__kmpc_fork_call(%struct.ident_t* [[DEF_LOC_2]], i32 2, void
(i32*, i32*, ...)* bitcast (void (i32*, i32*, i8***, i{{64|32}})*
[[OMP_OUTLINED:@.+]] to void (i32*, i32*, ...)*), i8*** [[ARGC_ADDR]],
i{{64|32}} %{{.+}})
+// IRBUILDER: call {{.*}}void (%struct.ident_t*, i32, void (i32*, i32*,
...)*, ...) @__kmpc_fork_call(%struct.ident_t* [[DEF_LOC_2]], i32 2, void
(i32*, i32*, ...)* bitcast (void (i32*, i32*, i{{64|32}}*, i8***)*
[[OMP_OUTLINED:@.+]] to void (i32*, i32*, ...)*), i{{64|32}}* %{{.+}}, i8***
[[ARGC_ADDR]])
// ALL: ret i32 0
----------------
The order of arguments changes here because we create a use of the
promoted-to-pointer argument before any other uses in the body and the outliner
finds it first. This should be fine because it's just an internal outlined
function that the builder created and the calls to it are emitted accordingly
and in the same builder. I can add a comment that explains this if desired.
If we go with Michael's suggestion not to turn into pointers the integer values
whose size is equal to or smaller than pointer size, this change will not be
necessary. I seem to remember seeing some documentation that says that trailing
arguments to `fork_call` should be _pointers_, but I can't find it anymore.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92189/new/
https://reviews.llvm.org/D92189
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits