[all-commits] [llvm/llvm-project] bfb9b8: [Passes] add a tail-call-elim pass near the end of...

Sanjay Patel via All-commits all-commits at lists.llvm.org
Mon Jul 25 12:26:02 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bfb9b8e075ee32197157ccaf0c301122ca9b81af
      https://github.com/llvm/llvm-project/commit/bfb9b8e075ee32197157ccaf0c301122ca9b81af
  Author: Sanjay Patel <spatel at rotateright.com>
  Date:   2022-07-25 (Mon, 25 Jul 2022)

  Changed paths:
    M clang/test/CodeGen/aarch64-ls64-inline-asm.c
    M clang/test/CodeGen/aarch64-neon-vcmla.c
    M clang/test/CodeGen/aarch64-sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.c
    M clang/test/CodeGen/aarch64-sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.cpp
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_abd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_abs.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_acge.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_acgt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_acle.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_aclt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_add.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_adda.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_addv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_adrb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_adrd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_adrh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_adrw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_and.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_andv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_asr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_asrd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bfdot.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bfmlalb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bfmlalt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bfmmla.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bic.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brka.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkn.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkpa.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkpb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cadd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clasta-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clasta.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clastb-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clastb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cls.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clz.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmla.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpeq.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpge.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpgt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmple.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmplt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpne.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpuo.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnot.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnt-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnth.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntp.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_compact.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create2.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create3-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create3.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create4-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create4.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cvt-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cvt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cvtnt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_div.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_divr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dot.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dup-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dup.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dupq-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dupq.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_eor.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_eorv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_expa.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ext-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ext.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_extb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_exth.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_extw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get2.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get3-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get3.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get4-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get4.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_index.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_insr-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_insr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lasta-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lasta.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lastb-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lastb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1ro-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1ro.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1rq-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1rq.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1ub.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1uh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1uw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld2.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld3-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld3.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld4-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld4.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1sb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1sh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1sw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1ub.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1uh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldff1uw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1sb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1sh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1sw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1ub.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1uh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnf1uw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnt1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnt1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_len-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_len.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lsl.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lsr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mad.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_matmul_fp32.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_matmul_fp64.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_max.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_maxnm.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_maxnmv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_maxv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_min.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_minnm.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_minnmv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_minv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mla.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mls.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mmla.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mov.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_msb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mul.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mulh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mulx.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nand.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_neg.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmad.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmla.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmls.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmsb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nor.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_not.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_orn.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_orr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_orv.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_pfirst.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_pnext.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ptest.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ptrue.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qadd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdech.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecp.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincd.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qinch.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincp.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qsub.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rbit.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rdffr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_recpe.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_recps.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_recpx.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rev-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rev.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_revb.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_revh.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_revw.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rinta.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rinti.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintm.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintn.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintp.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintx.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintz.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rsqrte.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rsqrts.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_scale.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sel-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sel.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set2.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set3-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set3.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set4-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set4.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_setffr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_splice-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_splice.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sqrt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1b.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1h.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1w.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st2.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st3-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st3.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st4-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st4.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_stnt1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_stnt1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sub.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_subr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sudot.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_tbl-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_tbl.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_tmad.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn1-fp64-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn1-fp64.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn2-fp64-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn2-fp64.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn2.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_tsmul.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_tssel.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_unpkhi.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_unpklo.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_usdot.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp1-fp64-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp1-fp64.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp2-fp64-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp2-fp64.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp2.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_whilele.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_whilelt.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_wrffr.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip1-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip1-fp64-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip1-fp64.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip1.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip2-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip2-fp64-bfloat.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip2-fp64.c
    M clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip2.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aba.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abalb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abalt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abdlb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abdlt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adalp.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adclb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adclt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addhnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addhnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlbt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addp.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addwb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addwt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aese.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesimc.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesmc.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bcax.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bdep.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bext.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bgrp.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl1n.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl2n.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cadd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cdot.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cmla.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtlt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtx.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtxnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eor3.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eorbt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eortb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hadd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_histcnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_histseg.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hsub.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hsubr.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sh.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sw.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1ub.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1uh.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1uw.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_logb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_match.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_maxnmp.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_maxp.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_minnmp.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_minp.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mla.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlalb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlalt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mls.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlslb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlslt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_movlb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_movlt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mul.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mullb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mullt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_nbsl.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_nmatch.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmul.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullb_128.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullt_128.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qabs.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qadd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qcadd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalbt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslbt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmulh.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmullb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmullt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qneg.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdcmlah.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmlah.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmlsh.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmulh.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshl.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrunb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrunt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshl.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshlu.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrunb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrunt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qsub.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qsubr.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtunb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtunt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_raddhnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_raddhnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rax1.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_recpe.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rhadd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshl.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshr.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshrnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshrnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsqrte.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsra.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sbclb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sbclt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shllb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shllt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shrnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shrnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sli.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sm4e.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sm4ekey.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sqadd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sra.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sri.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1b.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1h.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1w.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subhnb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subhnt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublbt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subltb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subwb.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subwt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbl2-bfloat.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbl2.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbx-bfloat.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbx.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_uqadd.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilege.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilegt.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilerw-bfloat.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilerw.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilewr-bfloat.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilewr.c
    M clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_xar.c
    M clang/test/CodeGen/aarch64_neon_sve_bridge_intrinsics/acle_neon_sve_bridge_dup_neonq.c
    M clang/test/CodeGen/aarch64_neon_sve_bridge_intrinsics/acle_neon_sve_bridge_get_neonq.c
    M clang/test/CodeGen/aarch64_neon_sve_bridge_intrinsics/acle_neon_sve_bridge_set_neonq.c
    M clang/test/CodeGen/atomic-ops-libcall.c
    M clang/test/CodeGen/attr-arm-sve-vector-bits-bitcast.c
    M clang/test/CodeGen/attr-arm-sve-vector-bits-call.c
    M clang/test/CodeGen/attr-arm-sve-vector-bits-cast.c
    M clang/test/CodeGen/attr-arm-sve-vector-bits-globals.c
    M clang/test/CodeGenCXX/RelativeVTablesABI/diamond-virtual-inheritance.cpp
    M clang/test/CodeGenCXX/RelativeVTablesABI/multiple-inheritance.cpp
    M clang/test/CodeGenCXX/microsoft-abi-dynamic-cast.cpp
    M clang/test/CodeGenCXX/microsoft-abi-typeid.cpp
    M clang/test/CodeGenCXX/wasm-args-returns.cpp
    M llvm/lib/Passes/PassBuilderPipelines.cpp
    M llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
    M llvm/test/Other/new-pm-defaults.ll
    M llvm/test/Other/new-pm-thinlto-defaults.ll
    M llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
    M llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
    M llvm/test/Transforms/Coroutines/coro-retcon-once-value.ll
    M llvm/test/Transforms/LoopVectorize/PowerPC/widened-massv-call.ll
    M llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
    M llvm/test/Transforms/PhaseOrdering/AArch64/peel-multiple-unreachable-exits-for-vectorization.ll
    M llvm/test/Transforms/PhaseOrdering/ARM/arm_add_q7.ll
    M llvm/test/Transforms/PhaseOrdering/ARM/arm_mult_q15.ll
    M llvm/test/Transforms/PhaseOrdering/X86/ctlz-loop.ll
    M llvm/test/Transforms/PhaseOrdering/X86/loop-idiom-vs-indvars.ll
    M llvm/test/Transforms/PhaseOrdering/X86/vector-reduction-known-first-value.ll
    M llvm/test/Transforms/PhaseOrdering/X86/vector-reductions.ll
    M llvm/test/Transforms/PhaseOrdering/memset-tail.ll
    M llvm/test/Transforms/PhaseOrdering/min-max-abs-cse.ll
    M llvm/test/Transforms/PhaseOrdering/minmax.ll
    M llvm/test/Transforms/PhaseOrdering/single-iteration-loop-sroa.ll

  Log Message:
  -----------
  [Passes] add a tail-call-elim pass near the end of the opt pipeline

We call tail-call-elim near the beginning of the pipeline,
but that is too early to annotate calls that get added later.

In the motivating case from issue #47852, the missing 'tail'
on memset leads to sub-optimal codegen.

I experimented with removing the early instance of
tail-call-elim instead of just adding another pass, but that
appears to be slightly worse for compile-time:
+0.15% vs. +0.08% time.
"tailcall" shows adding the pass; "tailcall2" shows moving
the pass to later, then adding the original early pass back
(so 1596886802 is functionally equivalent to 180b0439dc ):
https://llvm-compile-time-tracker.com/index.php?config=NewPM-O3&stat=instructions&remote=rotateright

Note that there was an effort to split the tail call functionality
into 2 passes - that could help reduce compile-time if we find
that this change costs more in compile-time than expected based
on the preliminary testing:
D60031

Differential Revision: https://reviews.llvm.org/D130374




More information about the All-commits mailing list