[llvm-commits] [llvm] r123103 - /llvm/trunk/lib/Target/README.txt

Chris Lattner clattner at apple.com
Sun Jan 9 15:43:18 PST 2011


On Jan 8, 2011, at 5:32 PM, Chandler Carruth wrote:
> +clang -03 currently compiles this code
> +
> +void f1(int* begin, int* end) {
> +  std::fill(begin, end, 0);
> +}

Ok, we still don't get this with recent changes.  We are really close, but there are several different things we need to do to pull this off, including adding an isexact bit to udiv (PR8862) and some instcombine style cleanups.  I don't plan to tackle these in the short term.

I filed PR8942 to track this, because it is a pretty serious perf issue.

-Chris

> +
> +into
> +
> +define void @_Z2f1PiS_(i32* %begin, i32* %end) nounwind {
> +entry:
> +  %cmp7.i.i = icmp eq i32* %begin, %end
> +  br i1 %cmp7.i.i, label %_ZSt4fillIPiiEvT_S1_RKT0_.exit, label %for.body.i.i
> +
> +for.body.i.i:                                     ; preds = %entry, %for.body.i.i
> +  %indvar.i.i = phi i64 [ %tmp, %for.body.i.i ], [ 0, %entry ]
> +  %tmp = add i64 %indvar.i.i, 1
> +  %ptrincdec.i.i = getelementptr i32* %begin, i64 %tmp
> +  %__first.addr.08.i.i = getelementptr i32* %begin, i64 %indvar.i.i
> +  store i32 0, i32* %__first.addr.08.i.i, align 4, !tbaa !0
> +  %cmp.i.i = icmp eq i32* %ptrincdec.i.i, %end
> +  br i1 %cmp.i.i, label %_ZSt4fillIPiiEvT_S1_RKT0_.exit, label %for.body.i.i
> +
> +_ZSt4fillIPiiEvT_S1_RKT0_.exit:                   ; preds = %for.body.i.i, %entry
> +  ret void
> +}
> +
> +It should compile it to a memset.
> +
> +//===---------------------------------------------------------------------===//
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list