Shoaib Meenai
Shoaib Meenai
Since https://reviews.llvm.org/D25721, LLD has assumed this. I assume other linkers behave similarly, and LLVM's ARM backend also assumes that R_ARM_PREL31 is PLT-generating. Update the ABI to reflect that.
I'm tracking https://github.com/llvm/clangir/pull/569#discussion_r1609000335 here so we don't forget it. https://godbolt.org/z/9b4o1GKrK shows that OG CodeGen adds `inrange` to the `getelementptr` for the vtable address point, but CIRGen doesn't, so we should...
CodeGen replaces trivial copy constructors and assignment operators with `memcpy`. ClangIR intentionally doesn't do so when generating CIR, so that all those function calls are available for analysis: https://godbolt.org/z/xcKdzKaWM. We'd...
ClangIR tries to represent all function calls in the IR (e.g. CodeGen omits calls to trivial constructors but CIRGen keeps them). One exception I've discovered is around calling `operator=` for...
See https://godbolt.org/z/3n85TK4ab for an example. CodeGen adds `-target-features` to LLVM function attributes to propagate `-march`. CIRGen needs to match this so that we can e.g. use feature-specific intrinsics end-to-end.
I'm seeking implementation advice for the CIRGen implementation of AggExprEmitter::VisitArrayInitLoopExpr. The [ArrayInitLoopExpr docs](https://clang.llvm.org/doxygen/classclang_1_1ArrayInitLoopExpr.html#details) explain the context; I'm specifically concerned with the copy constructor use case (e.g. https://godbolt.org/z/66anjPxa5 shows the initialization...
CIR currently attaches cleanup blocks to calls. For example, from https://godbolt.org/z/f4se8MPG7, the following code: ```cpp struct S { ~S(); }; void f(); void g() { S s; f(); f(); }...
https://godbolt.org/z/bdqM4ccxf demonstrates the issue. For the following code: ```cpp #include struct S { ~S() { puts("~S"); } }; int main() { for (int i = 0; i < 4; i++)...
As shown in https://godbolt.org/z/hG7ch1db3, the following code: ```cpp struct has_cleanup { ~has_cleanup(); }; void may_throw(); void func() { has_cleanup cleanup; may_throw(); may_throw(); may_throw(); } ``` Results in an error: ```...
As discussed in https://github.com/llvm/llvm-project/pull/113483, if we see a future need for it (e.g. for debug information or diagnostics), we can consider including more information in the `mlir::Location`s we create, e.g....