dblaikie added a comment. Ah, so the intent is that this causes these indirect args to be handled the same way as other arguments at -O0 - placed in an alloca, eg:
struct t1 { t1(const t1&); }; void f1(int, int); void f2(t1 v, int x) { f1(3, 4); } 0x00000033: DW_TAG_formal_parameter DW_AT_location (indexed (0x0) loclist = 0x00000010: [0x0000000000000000, 0x0000000000000010): DW_OP_breg5 RDI+0 [0x0000000000000010, 0x0000000000000020): DW_OP_entry_value(DW_OP_reg5 RDI)) DW_AT_name ("v") ... 0x0000003c: DW_TAG_formal_parameter DW_AT_location (DW_OP_fbreg -4) DW_AT_name ("x") ... Though I guess it doesn't change the codegen so that the alloca is used to load the value like with other values. Maybe it'd be worth changing the codegen to be more similar in that way? But maybe not. Don't know. It seems plausible - though the impact on -O0 will be a question - if this hurts code size/perf too much (there's /some/ line there, but I don't know what it is), it couldn't go in -O0 and I'm not sure where it'd go. Logically `-Og` would make sense, but that's `-O1` which runs mem2reg anyway, so would lose the alloca, which doesn't help... Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D141381/new/ https://reviews.llvm.org/D141381 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits