From 5822b86e4dc493f2fb7416a9aea0f51143d8e475 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Sun, 16 Jan 2011 21:26:15 +0000 Subject: [PATCH] Update README.txt to remove the DAE enhancement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123597 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/README.txt | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 6ba0d745f61..6c8187cdbf3 100644 --- a/lib/Target/README.txt +++ b/lib/Target/README.txt @@ -2,29 +2,6 @@ Target Independent Opportunities: //===---------------------------------------------------------------------===// -Dead argument elimination should be enhanced to handle cases when an argument is -dead to an externally visible function. Though the argument can't be removed -from the externally visible function, the caller doesn't need to pass it in. -For example in this testcase: - - void foo(int X) __attribute__((noinline)); - void foo(int X) { sideeffect(); } - void bar(int A) { foo(A+1); } - -We compile bar to: - -define void @bar(i32 %A) nounwind ssp { - %0 = add nsw i32 %A, 1 ; [#uses=1] - tail call void @foo(i32 %0) nounwind noinline ssp - ret void -} - -The add is dead, we could pass in 'i32 undef' instead. This occurs for C++ -templates etc, which usually have linkonce_odr/weak_odr linkage, not internal -linkage. - -//===---------------------------------------------------------------------===// - With the recent changes to make the implicit def/use set explicit in machineinstrs, we should change the target descriptions for 'call' instructions so that the .td files don't list all the call-clobbered registers as implicit