Commit Graph

225 Commits

Author SHA1 Message Date
Xin Liu
ea5a2b15a0 8251464: make Node::dump(int depth) support indent
Reviewed-by: thartmann
2020-10-02 13:45:29 +00:00
Christian Hagedorn
8d30bb03ee 8249607: C2: assert(!had_error) failed: bad dominance
Fix prevented igvn optimization in SplitIf for LoadNodes which resulted in dominanance errors with loop strip mining.

Reviewed-by: roland, kvn
2020-08-31 12:10:25 +02:00
Christian Hagedorn
31368cd1f0 8249602: C2: assert(cnt == _outcnt) failed: no insertions allowed
Use DUIterator instead of DUIterator_Fast due to legit insertions.

Reviewed-by: kvn, thartmann
2020-07-28 16:05:30 +02:00
Christian Hagedorn
417e8e449d 8248552: C2 crashes with SIGFPE due to division by zero
Bail out in PhaseIdealLoop:split_thru_phi when trying to split a Div or ModNode iv phi whose zero check was removed but could potentially still be zero based on type information.

Reviewed-by: kvn, thartmann
2020-07-27 11:03:17 +02:00
Mikael Vidstedt
1f5e21a16e Merge 2020-07-15 21:24:39 -07:00
Roland Westrelin
b67814941f 8229495: SIGILL in C2 generated OSR compilation
Reviewed-by: kvn, chagedorn
2020-07-01 17:28:49 +02:00
Igor Ignatyev
04280a0d05 8249000: vm.gc.X should take selected JIT into account
Reviewed-by: kvn
2020-07-10 11:52:35 -07:00
Mikael Vidstedt
09510a15a1 Merge 2020-07-10 23:12:29 -07:00
Christian Hagedorn
b02e4d4aba 8248596: [TESTBUG] compiler/loopopts/PartialPeelingUnswitch.java times out with Graal enabled
Change C2 specific test to be executed only with server compiler.

Reviewed-by: roland, kvn, thartmann
2020-07-06 09:16:58 +02:00
Christian Hagedorn
08df6a1f15 8246203: Segmentation fault in verification due to stack overflow with -XX:+VerifyIterativeGVN
Replace the recursive verification algorithm with an iterative one to avoid a stack overflow for large graphs.

Reviewed-by: kvn, thartmann
2020-06-15 09:50:11 +02:00
Roland Westrelin
9c99008aff 8245714: "Bad graph detected in build_loop_late" when loads are pinned on loop limit check uncommon branch
Reviewed-by: thartmann
2020-05-28 13:21:54 +02:00
Yong Zhou
dc54da232d 8244407: JVM crashes after transformation in C2 IdealLoopTree::split_fall_in
Reviewed-by: thartmann, kvn
2020-05-13 07:25:47 +08:00
Roland Westrelin
f0b37f161b 8239569: PublicMethodsTest.java failed due to NPE in java.base/java.nio.file.FileSystems.getFileSystem(FileSystems.java:230)
Reviewed-by: thartmann, kvn
2020-04-23 15:54:08 +02:00
Igor Ignatyev
70e632d5ec 8243935: remove copying of s.h.WB$WhiteBoxPermission in hotspot tests
Reviewed-by: dholmes, stefank
2020-04-28 19:57:02 -07:00
Igor Ignatyev
7c351405c4 8242310: use reproducible random in hotspot compiler tests
Reviewed-by: kvn, thartmann
2020-04-08 22:58:42 -07:00
Jie Fu
3487361a39 8242379: [TESTBUG] compiler/loopopts/TestLoopUnswitchingLostCastDependency.java fails with release VMs
Reviewed-by: roland, kvn
2020-04-09 09:20:18 +08:00
Roland Westrelin
6405d75070 8241900: Loop unswitching may cause dependence on null check to be lost
Reviewed-by: thartmann, kvn
2020-04-02 15:03:27 +02:00
Per Lidén
2e4783411e 8240745: Implementation: JEP 377: ZGC: A Scalable Low-Latency Garbage Collector (Production)
Reviewed-by: stefank, eosterlund
2020-04-03 23:40:33 +02:00
Christian Hagedorn
c01e986cc9 8237859: C2: Crash when loads float above range check
Fix control edges of predicates to data nodes when creating pre/main/post loops.

Reviewed-by: neliasso, thartmann, roland
2020-03-25 14:41:52 +01:00
Sandhya Viswanathan
398ce2948c 8240248: Extend superword reduction optimizations for x86
Add support for and, or, xor reduction

Co-authored-by: Shravya Rukmannagari <shravya.rukmannagari@intel.com>
Reviewed-by: vlivanov, thartmann
2020-03-23 10:26:40 -07:00
Christian Hagedorn
a51dd58f38 8240227: Loop predicates should be copied to unswitched loops
Copy loop range check predicates to unswitched loops and update their control edges.

Reviewed-by: kvn, neliasso, thartmann, roland
2020-03-19 10:15:28 +01:00
Dongbo He
aa2be1141d 8240576: JVM crashes after transformation in C2 IdealLoopTree::merge_many_backedges
Reviewed-by: kvn
2020-03-09 22:31:12 +08:00
Qi Feng
d1818942b0 8240286: [TESTBUG] Test command error in hotspot/jtreg/compiler/loopopts/superword/SumRedAbsNeg_Float.java
Reviewed-by: kvn, thartmann
2020-03-05 14:51:41 +08:00
Christian Hagedorn
d7b122ed69 8238438: SuperWord::co_locate_pack picks memory state of first instead of last load
Fix selection of first and last memory state in SuperWord::co_locate_pack

Reviewed-by: thartmann, kvn
2020-03-02 10:23:08 +01:00
Pengfei Li
934db29ac5 8239549: AArch64: Backend support for MulAddVS2VI node
Reviewed-by: aph
2020-02-26 09:33:29 +08:00
Christian Hagedorn
3ea92e735b 8238756: C2: assert(((n) == __null || !VerifyIterativeGVN || !((n)->is_dead()))) failed: can not use dead node
Fix -XX:+VerifyIterativeGVN due to a dead node and add some basic flag testing.

Reviewed-by: roland, neliasso
2020-02-13 15:07:45 +01:00
Fairoz Matte
a4b3e781fe 8236701: [TESTBUG] compiler/loopopts/superword/Vec_MulAddS2I.java uses wrong flag -XX:-SuperWord
Reviewed-by: iklam, thartmann
2020-01-16 17:37:09 -08:00
Fei Yang
a86e196559 8235762: JVM crash in SWPointer during C2 compilation
Reviewed-by: thartmann, chagedorn, neliasso
2020-01-09 19:12:16 +08:00
Christian Hagedorn
3e9a17c53e 8235984: C2: assert(out->in(PhiNode::Region) == head || out->in(PhiNode::Region) == slow_head) failed: phi must be either part of the slow or the fast loop
Bailout from loop unswitching if loop predicates have a control dependency to partially peeled statements.

Reviewed-by: neliasso, thartmann
2020-01-07 17:06:10 +01:00
Jatin Bhateja
079db54d51 8230185: assert(is_Loop()) failed: invalid node class
Adding missing check for a counted loop.

Reviewed-by: kvn, thartmann
2019-12-18 10:04:53 +01:00
Christian Hagedorn
ba94936c80 8233033: C2 produces wrong result while unswitching a loop due to lost control dependencies
Adding missing control dependencies when cloning loop predicates at loop unswitching.

Reviewed-by: roland, vlivanov, thartmann
2019-12-11 14:33:32 +01:00
Christian Hagedorn
2ee7b9d3a0 8233032: assert(in_bb(n)) failed: must be
Find first and last memory state of a load pack without relying on bb indices.

Co-authored-by: Roland Westrelin <rwestrel@redhat.com>
Reviewed-by: roland, kvn, thartmann
2019-12-10 09:28:38 +01:00
Christian Hagedorn
fd8832f726 8229994: assert(false) failed: Bad graph detected in get_early_ctrl_for_expensive
Fixes wrong idom information set in loop peeling when a loop strip mined loop is involved.

Reviewed-by: vlivanov, thartmann
2019-12-06 10:00:16 +01:00
Christoph Göttschkes
9c4adc66c7 8234906: [TESTBUG] TestDivZeroCheckControl fails for client VMs due to Unrecognized VM option LoopUnrollLimit
Reviewed-by: kvn
2019-12-04 10:38:54 +01:00
Christoph Göttschkes
a4a351caad 8234807: [TESTBUG] LoopRotateBadNodeBudget fails for client VMs due to Unrecognized VM option PartialPeelNewPhiDelta
Reviewed-by: kvn
2019-11-27 10:13:41 +01:00
Tobias Hartmann
1833584f92 8233529: loopTransform.cpp:2984: Error: assert(p_f->Opcode() == Op_IfFalse) failed
Strengthened asserts in locate_pre_from_main() and added a check for is_main_no_pre_loop().

Reviewed-by: kvn, vlivanov
2019-11-12 10:16:04 +01:00
Christian Hagedorn
173dae8bc6 8229694: JVM crash in SWPointer during C2 OSR compilation
Handle the case where there is only 1 pack and no operations left when calling SuperWord::find_align_to_ref() to find the best alignment again.

Reviewed-by: kvn, vlivanov, thartmann
2019-11-11 10:41:03 +01:00
Patric Hedlin
902858e3ce 8231565: More node budget asserts in fuzzed tests
Reviewed-by: neliasso, thartmann
2019-10-23 12:51:53 +02:00
Christian Hagedorn
13b4952f11 8232874: Add missing test for 8230062
Adds a missing test which verifies the bug fix of 8230062.

Reviewed-by: roland, thartmann
2019-10-23 12:17:14 +02:00
Huang Wang
4fb2bb554d 8231988: Unexpected test result caused by C2 IdealLoopTree::do_remove_empty_loop
Duplicate cmp node in empty loop if it has other users

Co-authored-by: Tuo Xie <xietuo@huawei.com>
Reviewed-by: neliasso, thartmann
2019-10-11 16:52:18 +08:00
Roland Westrelin
a81dcf4dbf 8231620: assert(bol->is_Bool()) crash during split if due to FastLockNode
Reviewed-by: vlivanov, thartmann
2019-10-01 10:28:12 +02:00
Patric Hedlin
8275b17b07 8229499: Node budget assert in fuzzed test
Reviewed-by: thartmann, neliasso
2019-09-12 11:44:51 +02:00
Tobias Hartmann
a03e92201d 8231223: C2's conditional move optimization fails with assert(bol->Opcode() == Op_Bool) failed
Bail out if the range check If has an Opaque4Node input instead of a BoolNode.

Reviewed-by: roland, kvn
2019-09-26 09:16:08 +02:00
Aleksey Shipilev
7c2fe7025b 8230813: Add JDK-8010500 to compiler/loopopts/superword/TestFuzzPreLoop.java bug list
Reviewed-by: zgu
2019-09-10 19:58:22 +02:00
Tobias Hartmann
a4b46ccc23 8229496: SIGFPE (division by zero) in C2 OSR compiled method
Adding a CastNode to keep the dependency between the div/mod operation and the zero check.

Reviewed-by: roland, mdoerr
2019-09-05 13:56:17 +02:00
Aleksey Shipilev
5110530d5b 8230238: Add another regression test for JDK-8134739
Reviewed-by: kvn
2019-09-02 11:31:12 +02:00
Christian Hagedorn
db359f11b5 8229158: make UseSwitchProfiling non-experimental or false by-default
Changed UseSwitchProfiling from experimental to diagnostic.

Reviewed-by: dholmes, shade, thartmann
2019-08-20 10:46:23 +02:00
Tobias Hartmann
672fa8b97a 8228888: C2 compilation fails with assert "m has strange control"
Weakened too strong assert.

Reviewed-by: kvn, roland
2019-08-20 07:47:13 +02:00
Patric Hedlin
d222b01dee 8223363: Bad node estimate assertion failure
8223502: Node estimate for loop unswitching is not correct: assert(delta <= 2 * required) failed: Bad node estimate
8224648: assert(!exceeding_node_budget()) failed: Too many NODES required! failure with ctw

Tighten the node estimates. New est_loop_clone_sz() implementation that will compute a "fan-out" complexity estimate as part of the size estimate (to better estimate complex loop body size after cloning). New est_loop_unroll_sz() function, used to estimate the size of a loop body att full/maximal unrolling. Correction to node budget final tests and asserts.

Reviewed-by: neliasso, kvn
2019-05-28 14:56:58 +02:00
Patric Hedlin
a17df8d45b 8210392: assert(Compile::current()->live_nodes() < Compile::current()->max_node_limit()) failed: Live Node limit exceeded limit
Avoid excessive split-if.

Reviewed-by: thartmann, neliasso
2018-12-18 10:12:28 +01:00
Roland Westrelin
326c6997a0 8215044: C2 crash in loopTransform.cpp with assert(cl->trip_count() > 0) failed: peeling a fully unrolled loop
Reviewed-by: thartmann, kvn
2018-12-13 17:57:11 +01:00
Rahul Raghavan
5a6385b363 8211698: Crash in C2 compiled code during execution of double array heavy processing code
Correctly registered new Opaque4Node in add_range_check_predicate

Reviewed-by: roland, thartmann
2018-12-18 19:13:54 +05:30
Tobias Hartmann
2e989366ea 8215410: Regression test for JDK-8214994
Added a regression test for 8214994 which was fixed by accident with 8211451.

Reviewed-by: kvn
2018-12-17 08:25:57 +01:00
Vivek Deshpande
05e175bf1b 8214751: X86: Support for VNNI Instructions
Co-authored-by: Razvan A Lupusoru <razvan.a.lupusoru@intel.com>
Reviewed-by: kvn
2018-12-12 14:48:34 -08:00
Roland Westrelin
84cd74b013 8214344: C2: assert(con.basic_type() != T_ILLEGAL) failed: elembt=byte; loadbt=void; unsigned=0
Reviewed-by: kvn, thartmann
2018-11-27 08:44:19 +01:00
Tobias Hartmann
73bcb0507e 8208275: C2 crash in Node::add_req(Node*)
Split-if optimization should not process (dead) counted loops.

Reviewed-by: roland
2018-08-17 08:21:20 +02:00
Aleksei Voitylov
2d0aee2275 8207065: Cleanup compiler tests for Client VM
Reviewed-by: kvn, iignatyev
2018-07-13 11:13:34 -07:00
Roland Westrelin
8c2d9b5ff0 8202123: C2 Crash in Node::in(unsigned int) const+0x14
Reviewed-by: kvn, thartmann
2018-06-29 17:59:44 +02:00
Roland Westrelin
7d7184e505 8205515: assert(opcode == Op_RangeCheck) failed: no other if variant here
Reviewed-by: thartmann, kvn
2018-07-02 10:44:46 +02:00
Tobias Hartmann
d2f70d7052 8205033: [REDO] Induction variable of over-unrolled loop conflicts with range checks
Update skeleton predicates before main loop during unrolling to remove dead code.

Reviewed-by: kvn, roland
2018-06-19 12:25:42 +02:00
Vladimir Kozlov
3ced42361d 8202948: C2: assert(init_offset >= 0) failed: positive offset from object start
Convert the assert into compilation check which will skip superword optimization

Reviewed-by: roland, thartmann
2018-06-15 08:28:08 -07:00
Tobias Hartmann
d01224d43e 8205034: [BACKOUT] Induction variable of over-unrolled loop conflicts with range checks
Backout fix for JDK-8203915 because it causes SIGILL failures.

Reviewed-by: shade
2018-06-14 11:22:04 +02:00
Tobias Hartmann
c9c8cc68de 8203915: Induction variable of over-unrolled loop conflicts with range checks
Update skeleton predicates before main loop during unrolling to remove dead code.

Reviewed-by: kvn, roland
2018-06-14 09:04:55 +02:00
Tobias Hartmann
2d00538d92 8202949: C2: assert(false) failed: Bad graph detected in build_loop_late
Fixed trip count computation for counted loop with negative stride to prevent over-unrolling.

Reviewed-by: roland
2018-05-25 09:05:42 +02:00
Roland Westrelin
98db6d11f3 8193130: Bad graph when unrolled loop bounds conflicts with range checks
Reviewed-by: kvn, thartmann
2018-03-22 20:21:19 -07:00
Roland Westrelin
4f8c5b6949 8197563: assert(is_Loop()) crash in PhaseIdealLoop::try_move_store_before_loop()
Don't move store out of the loop if head is not a LoopNode.

Reviewed-by: kvn, thartmann
2018-02-13 16:57:01 +01:00
Roland Westrelin
d244b3ccd1 8196296: Lucene test crashes C2 compilation
Prevent merging of back to back ifs if one is a counted loop end.

Reviewed-by: kvn, thartmann
2018-01-30 09:08:44 +01:00
Roland Westrelin
29bab311ab 8192908: -XX:+UseCountedLoopSafepoints alone doesn't disable strip mining with G1
-XX:+UseCountedLoopSafepoints should disable loop strip mining.

Reviewed-by: kvn, thartmann
2017-12-07 15:52:46 +01:00
Roland Westrelin
386e258e20 8186027: C2: loop strip mining
Reviewed-by: kvn, neliasso
2017-11-28 11:59:16 +01:00
Roland Westrelin
1c25161036 8191153: assert(u_ctrl != blk1 && u_ctrl != blk2) failed: won't converge
Relax assert

Reviewed-by: kvn
2017-11-27 10:44:19 -08:00
Roland Westrelin
002aff0a75 8190375: Java Crash in JavaBug.formatPos(I)Ljava/lang/String
Skip the logic that set the value of the Phi iv if the exit condition is "not equal"

Reviewed-by: thartmann, mdoerr
2017-11-13 14:53:28 -05:00
Tobias Hartmann
34622112b6 8189067: SuperWord optimization crashes with "assert(out == prev || prev == __null) failed: no branches off of store slice"
Only move the store if the LCA of all users is outside of the loop. Re-enable UseSubwordForMaxVector.

Reviewed-by: kvn, roland
2017-10-13 14:02:01 +02:00
Roland Westrelin
844e594fec 8187822: C2 conditonal move optimization might create broken graph
Reviewed-by: kvn
2017-09-27 16:17:47 +02:00
Ekaterina Pavlova
853f26ed15 8185134: [Graal] Introduce vm.graal predicate and tag tests which are not applicable for Graal
Reviewed-by: kvn, dnsimon
2017-10-02 14:31:34 -07:00
Erik Joelsson
3789983e89 8187443: Forest Consolidation: Move files to unified layout
Reviewed-by: darcy, ihse
2017-09-12 19:03:39 +02:00