Shoaib Meenai

Results 16 issues of 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...

IR difference

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...

good first issue
optimization

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...

IR design

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.

IR difference

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(); }...

IR design

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: ```...

bug

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....

enhancement