<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/llvm/test/Transforms/GlobalOpt, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2020-01-04T13:42:38+00:00</updated>
<entry>
<title>[Transforms][GlobalSRA] huge array causes long compilation time and huge memory usage.</title>
<updated>2020-01-04T13:42:38+00:00</updated>
<author>
<name>Alexey Lapshin</name>
<email>a.v.lapshin@mail.ru</email>
</author>
<published>2019-12-24T21:38:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=831bfcea47826a102ece03f0fad33ce39a73c672'/>
<id>urn:sha1:831bfcea47826a102ece03f0fad33ce39a73c672</id>
<content type='text'>
Summary:
For artificial cases (huge array, few usages), Global SRA optimization creates
a lot of redundant data. It creates an instance of GlobalVariable for each array
element. For huge array, that means huge compilation time and huge memory usage.
Following example compiles for 10 minutes and requires 40GB of memory.

namespace {
  char LargeBuffer[64 * 1024 * 1024];
}

int main ( void ) {

    LargeBuffer[0] = 0;

    printf("\n ");

    return LargeBuffer[0] == 0;
}

The fix is to avoid Global SRA for large arrays.

Reviewers: craig.topper, rnk, efriedma, fhahn

Reviewed By: rnk

Subscribers: xbolva00, lebedev.ri, lkail, merge_guards_bot, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71993
</content>
</entry>
<entry>
<title>remove UB from test by making GV alignment explicit</title>
<updated>2019-12-01T15:16:31+00:00</updated>
<author>
<name>Nuno Lopes</name>
<email>nunoplopes@sapo.pt</email>
</author>
<published>2019-12-01T15:16:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=89c47313c9b11c9f7b6ee1b6cbc7789fdb5e75ea'/>
<id>urn:sha1:89c47313c9b11c9f7b6ee1b6cbc7789fdb5e75ea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>[GlobalOpt] prevent crashing on large integer types (PR42932)</title>
<updated>2019-08-09T12:43:25+00:00</updated>
<author>
<name>Sanjay Patel</name>
<email>spatel@rotateright.com</email>
</author>
<published>2019-08-09T12:43:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=991834a51616799456a5e65cefde2f41c350aca2'/>
<id>urn:sha1:991834a51616799456a5e65cefde2f41c350aca2</id>
<content type='text'>
This is a minimal fix (copy the predicate for the assert) to
prevent the crashing seen in:
https://bugs.llvm.org/show_bug.cgi?id=42932
...when converting a constant integer of arbitrary width to uint64_t.

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

llvm-svn: 368437
</content>
</entry>
<entry>
<title>IR: print value numbers for unnamed function arguments</title>
<updated>2019-08-03T14:28:34+00:00</updated>
<author>
<name>Tim Northover</name>
<email>tnorthover@apple.com</email>
</author>
<published>2019-08-03T14:28:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a009a60a917bc30940422bcef73f8270566d78db'/>
<id>urn:sha1:a009a60a917bc30940422bcef73f8270566d78db</id>
<content type='text'>
For consistency with normal instructions and clarity when reading IR,
it's best to print the %0, %1, ... names of function arguments in
definitions.

Also modifies the parser to accept IR in that form for obvious reasons.

llvm-svn: 367755
</content>
</entry>
<entry>
<title>[lit] Delete empty lines at the end of lit.local.cfg NFC</title>
<updated>2019-06-17T09:51:07+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>maskray@google.com</email>
</author>
<published>2019-06-17T09:51:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=ac14f7b10cffe2be548607269e036244cd16acc3'/>
<id>urn:sha1:ac14f7b10cffe2be548607269e036244cd16acc3</id>
<content type='text'>
llvm-svn: 363538
</content>
</entry>
<entry>
<title>Revert r361460</title>
<updated>2019-05-24T01:03:51+00:00</updated>
<author>
<name>Eli Friedman</name>
<email>efriedma@quicinc.com</email>
</author>
<published>2019-05-24T01:03:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=052f87ae36163cbd2033617eba655af7f1438733'/>
<id>urn:sha1:052f87ae36163cbd2033617eba655af7f1438733</id>
<content type='text'>
It regresses https://bugs.llvm.org/show_bug.cgi?id=38309 (represented
by the testcase test/Transforms/GlobalOpt/globalsra-multigep.ll).

llvm-svn: 361581
</content>
</entry>
<entry>
<title>[GlobalOpt] recognize dead struct fields and propagate values</title>
<updated>2019-05-23T05:53:10+00:00</updated>
<author>
<name>Christian Bruel</name>
<email>christian.bruel@st.com</email>
</author>
<published>2019-05-23T05:53:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=4a7da98bd9283e2e6aa635031d2f131493c8ad1a'/>
<id>urn:sha1:4a7da98bd9283e2e6aa635031d2f131493c8ad1a</id>
<content type='text'>
Summary:
Allow struct fields SRA and dead stores. This works by considering fields accesses from getElementPtr to be considered as a possible pointer root that can be cleaned up.
We check that the variable can be SRA by recursively checking the sub expressions with the new isSafeSubSROAGEP function.

basically this allows the array in following C code  to be optimized out 

struct Expr {
  int a[2];
  int b;
};

static struct Expr e;

int foo (int i)
{
  e.b = 2;
  e.a[i] = 1;
  return e.b;
}


Reviewers: greened, bkramer, nicholas, jmolloy

Reviewed By: jmolloy

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 361460
</content>
</entry>
<entry>
<title>[IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format</title>
<updated>2019-05-15T02:35:32+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>maskray@google.com</email>
</author>
<published>2019-05-15T02:35:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f4dfd63c74899e2953b176de2174ae7a8924a72c'/>
<id>urn:sha1:f4dfd63c74899e2953b176de2174ae7a8924a72c</id>
<content type='text'>
The 3-field form was introduced by D3499 in 2014 and the legacy 2-field
form was planned to be removed in LLVM 4.0

For the textual format, this patch migrates the existing 2-field form to
use the 3-field form and deletes the compatibility code.
test/Verifier/global-ctors-2.ll checks we have a friendly error message.

For bitcode, lib/IR/AutoUpgrade UpgradeGlobalVariables will upgrade the
2-field form (add i8* null as the third field).

Reviewed By: rnk, dexonsmith

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

llvm-svn: 360742
</content>
</entry>
<entry>
<title>GlobalOpt: do not promote globals used atomically to constants.</title>
<updated>2019-05-14T11:03:13+00:00</updated>
<author>
<name>Tim Northover</name>
<email>tnorthover@apple.com</email>
</author>
<published>2019-05-14T11:03:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=ed9117f88d0f2282b6c994fc3a5f4818c4046e84'/>
<id>urn:sha1:ed9117f88d0f2282b6c994fc3a5f4818c4046e84</id>
<content type='text'>
Some atomic loads are implemented as cmpxchg (particularly if large or
floating), and that usually requires write access to the memory involved
or it will segfault.

We can still propagate the constant value to users we understand though.

llvm-svn: 360662
</content>
</entry>
<entry>
<title>[DebugInfo] GlobalOpt DW_OP_deref_size instead of DW_OP_deref.</title>
<updated>2019-05-06T07:20:56+00:00</updated>
<author>
<name>Markus Lavin</name>
<email>markus.lavin@ericsson.com</email>
</author>
<published>2019-05-06T07:20:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a778074165ca9554c9556b9bbeee6ca4e2babe96'/>
<id>urn:sha1:a778074165ca9554c9556b9bbeee6ca4e2babe96</id>
<content type='text'>
Optimization pass lib/Transforms/IPO/GlobalOpt.cpp needs to insert
DW_OP_deref_size instead of DW_OP_deref to be compatible with big-endian
targets for same reasons as in D59687.

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

llvm-svn: 360013
</content>
</entry>
</feed>
