- Oct 24, 2012
-
-
Micah Villmow authored
This checkin also adds in some tests that utilize these paths and updates some of the clients. llvm-svn: 166578
-
- Oct 18, 2012
-
-
Chandler Carruth authored
over the implicitly-formed-and-nesting CGSCC pass manager and function pass managers, especially when using them on the opt commandline or using extension points in the module builder. The '-barrier' opt flag (or the pass itself) will create a no-op module pass in the pipeline, resetting the pass manager stack, and allowing the creation of a new pipeline of function passes or CGSCC passes to be created that is independent from any previous pipelines. For example, this can be used to test running two CGSCC passes in independent CGSCC pass managers as opposed to in the same CGSCC pass manager. It also allows us to introduce a further hack into the PassManagerBuilder to separate the O0 pipeline extension passes from the always-inliner's CGSCC pass manager, which they likely do not want to participate in... At the very least none of the Sanitizer passes want this behavior. This fixes a bug with ASan at O0 currently, and I'll commit the ASan test which covers this pass. I'm happy to add a test case that this pass exists and works, but not sure how much time folks would like me to spend adding test cases for the details of its behavior of partition pass managers.... The whole thing is just vile, and mostly intended to unblock ASan, so I'm hoping to rip this all out in a brave new pass manager world. llvm-svn: 166172
-
- Oct 17, 2012
-
-
Nadav Rotem authored
llvm-svn: 166112
-
- Oct 16, 2012
-
-
Bill Wendling authored
Use the Attributes::get method which takes an AttrVal value directly to simplify the code a bit. No functionality change. llvm-svn: 166009
-
Craig Topper authored
llvm-svn: 166004
-
- Oct 15, 2012
-
-
Bill Wendling authored
Move the Attributes::Builder outside of the Attributes class and into its own class named AttrBuilder. No functionality change. llvm-svn: 165960
-
Bill Wendling authored
Add an enum for the return and function indexes into the AttrListPtr object. This gets rid of some magic numbers. llvm-svn: 165924
-
Bill Wendling authored
Convert the internal representation of the Attributes class into a pointer to an opaque object that's uniqued by and stored in the LLVMContext object. The Attributes class then becomes a thin wrapper around this opaque object. Eventually, the internal representation will be expanded to include attributes that represent code generation options, etc. llvm-svn: 165917
-
- Oct 14, 2012
-
-
Bill Wendling authored
llvm-svn: 165899
-
Bill Wendling authored
Remove the bitwise AND operators from the Attributes class. Replace it with the equivalent from the builder class. llvm-svn: 165896
-
Bill Wendling authored
Remove the bitwise assignment OR operator from the Attributes class. Replace it with the equivalent from the builder class. llvm-svn: 165895
-
Bill Wendling authored
Remove the bitwise NOT operator from the Attributes class. Replace it with the equivalent from the builder class. llvm-svn: 165892
-
- Oct 10, 2012
-
-
Bill Wendling authored
namespace. Use the attribute's enum value instead. No functionality change intended. llvm-svn: 165610
-
Bill Wendling authored
Have 'addFnAttr' take the attribute enum value. Then have it build the attribute object and add it appropriately. No functionality change. llvm-svn: 165595
-
- Oct 09, 2012
-
-
Bill Wendling authored
llvm-svn: 165550
-
Alexey Samsonov authored
llvm-svn: 165498
-
Bill Wendling authored
llvm-svn: 165494
-
Alexey Samsonov authored
DeadArgumentElimination pass can replace one LLVM function with another, invalidating a pointer stored in debug info metadata entry for this function. To fix this, we collect debug info descriptors for functions before running a DeadArgumentElimination pass and "patch" pointers in metadata nodes if we replace a function. llvm-svn: 165490
-
Bill Wendling authored
We use the enums to query whether an Attributes object has that attribute. The opaque layer is responsible for knowing where that specific attribute is stored. llvm-svn: 165488
-
Bill Wendling authored
llvm-svn: 165468
-
Nick Lewycky authored
the same thing. No functionality change. llvm-svn: 165435
-
- Oct 08, 2012
-
-
Micah Villmow authored
llvm-svn: 165402
-
- Oct 04, 2012
-
-
Bill Wendling authored
llvm-svn: 165209
-
Bill Wendling authored
llvm-svn: 165208
-
Bill Wendling authored
llvm-svn: 165207
-
Bill Wendling authored
llvm-svn: 165206
-
- Oct 02, 2012
-
-
Chandler Carruth authored
Again, let me know if anything breaks due to this! llvm-svn: 164986
-
- Sep 30, 2012
-
-
Benjamin Kramer authored
Fun fact: The CBE learned how to deal with this situation before it was removed. llvm-svn: 164918
-
- Sep 28, 2012
-
-
-
Benjamin Kramer authored
Fixes PR13968. llvm-svn: 164815
-
- Sep 27, 2012
-
-
Sylvestre Ledru authored
Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 llvm-svn: 164768
-
Sylvestre Ledru authored
llvm-svn: 164767
-
Nick Lewycky authored
have testcases for the current problems. llvm-svn: 164731
-
- Sep 26, 2012
-
-
Bill Wendling authored
The hasFnAttr method has been replaced by querying the Attributes explicitly. No intended functionality change. llvm-svn: 164725
-
- Sep 25, 2012
-
-
Bill Wendling authored
llvm-svn: 164629
-
- Sep 24, 2012
-
-
Chandler Carruth authored
Queue the fallout. ;] llvm-svn: 164480
-
- Sep 18, 2012
-
-
Benjamin Kramer authored
llvm-svn: 164124
-
Chandler Carruth authored
FCAs. This is essential in order to promote allocas that are used in struct returns by frontends like Clang. The FCA load would block the rest of the pass from firing, resulting is significant regressions with the bullet benchmark in the nightly test suite. Thanks to Duncan for repeated discussions about how best to do this, and to both him and Benjamin for review. This appears to have blocked many places where the pass tries to fire, and so I'm expect somewhat different results with this fix added. As with the last big patch, I'm including a change to enable the SROA by default *temporarily*. Ben is going to remove this as soon as the LNT bots pick up the patch. I'm just trying to get a round of LNT numbers from the stable machines in the lab. NOTE: Four clang tests are expected to fail in the brief window where this is enabled. Sorry for the noise! llvm-svn: 164119
-
- Sep 15, 2012
-
-
Benjamin Kramer authored
What we have so far: - Some clang test failures (these were known already) - Perf results are mixed, some big regressions http://llvm.org/perf/db_default/v4/nts/3844 http://llvm.org/perf/db_default/v4/nts/3845 bullet suffers a lot. matmul is interesting: slower scalar code, faster with -vectorize. - Some dragonegg selfhost bots crash in SROA during selfhost now http://lab.llvm.org:8011/builders/dragonegg-x86_64-linux-gcc-4.6-self-host-checks/builds/1632 http://lab.llvm.org:8011/builders/dragonegg-x86_64-linux-gcc-4.5-self-host/builds/1891 llvm-svn: 163968
-
Chandler Carruth authored
new one, and add support for running the new pass in that mode and in that slot of the pass manager. With this the new pass can completely replace the old one within the pipeline. The strategy for enabling or disabling the SSAUpdater logic is to do it by making the requirement of the domtree analysis optional. By default, it is required and we get the standard mem2reg approach. This is usually the desired strategy when run in stand-alone situations. Within the CGSCC pass manager, we disable requiring of the domtree analysis and consequentially trigger fallback to the SSAUpdater promotion. In theory this would allow the pass to re-use a domtree if one happened to be available even when run in a mode that doesn't require it. In practice, it lets us have a single pass rather than two which was simpler for me to wrap my head around. There is a hidden flag to force the use of the SSAUpdater code path for the purpose of testing. The primary testing strategy is just to run the existing tests through that path. One notable difference is that it has custom code to handle lifetime markers, and one of the tests has been enhanced to exercise that code. This has survived a bootstrap and the test suite without serious correctness issues, however my run of the test suite produced *very* alarming performance numbers. I don't entirely understand or trust them though, so more investigation is on-going. To aid my understanding of the performance impact of the new SROA now that it runs throughout the optimization pipeline, I'm enabling it by default in this commit, and will disable it again once the LNT bots have picked up one iteration with it. I want to get those bots (which are much more stable) to evaluate the impact of the change before I jump to any conclusions. NOTE: Several Clang tests will fail because they run -O3 and check the result's order of output. They'll go back to passing once I disable it again. llvm-svn: 163965
-