From d5c391bba683eb057f08d21afba319a1d19488fc Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 21 May 2010 23:16:21 +0000 Subject: [PATCH] add a note llvm-svn: 104404 --- lib/Target/README.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 144bf5d3e3d..7fa73edaefe 100644 --- a/lib/Target/README.txt +++ b/lib/Target/README.txt @@ -1833,6 +1833,21 @@ entry: We should use DSE + llvm.lifetime.end to delete dead vtable pointer updates. See GCC PR34949 +Another interesting case is that something related could be used for variables +that go const after their ctor has finished. In these cases, globalopt (which +can statically run the constructor) could mark the global const (so it gets put +in the readonly section). A testcase would be: + +#include +using namespace std; +const complex should_be_in_rodata (42,-42); +complex should_be_in_data (42,-42); +complex should_be_in_bss; + +Where we currently evaluate the ctors but the globals don't become const because +the optimizer doesn't know they "become const" after the ctor is done. See +GCC PR4131 for more examples. + //===---------------------------------------------------------------------===// In this code: