Akira Hatanaka
6ff59a16a0
[mips] Make sure loads from lazy-binding entries do not get CSE'd or hoisted out
...
of loops.
Previously, two consecutive calls to function "func" would result in the
following sequence of instructions:
1. load $16, %got(func)($gp) // load address of lazy-binding stub.
2. move $25, $16
3. jalr $25 // jump to lazy-binding stub.
4. nop
5. move $25, $16
6. jalr $25 // jump to lazy-binding stub again.
With this patch, the second call directly jumps to func's address, bypassing
the lazy-binding resolution routine:
1. load $25, %got(func)($gp) // load address of lazy-binding stub.
2. jalr $25 // jump to lazy-binding stub.
3. nop
4. load $25, %got(func)($gp) // load resolved address of func.
5. jalr $25 // directly jump to func.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191591 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-28 00:12:32 +00:00
..
2013-09-27 13:36:54 +00:00
2013-08-14 00:21:25 +00:00
2013-08-04 23:56:53 +00:00
2013-08-04 23:56:53 +00:00
2013-07-26 18:34:25 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-13 20:38:47 +00:00
2013-09-28 00:12:32 +00:00
2013-07-14 06:24:09 +00:00
2013-08-20 23:47:25 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-08-22 21:28:54 +00:00
2013-07-14 06:24:09 +00:00
2013-08-22 21:28:54 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-08-02 19:23:33 +00:00
2013-05-16 19:44:40 +00:00
2013-06-07 18:36:03 +00:00
2013-08-04 23:56:53 +00:00
2013-08-22 21:28:54 +00:00
2013-07-12 23:33:22 +00:00
2013-08-09 21:33:41 +00:00
2013-08-22 21:28:54 +00:00
2013-09-23 22:36:11 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-09-21 01:37:52 +00:00
2013-09-18 22:46:09 +00:00
2013-09-25 20:58:50 +00:00
2013-09-25 20:58:50 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-09-28 00:12:32 +00:00
2013-07-14 06:24:09 +00:00
2013-07-13 20:38:47 +00:00
2013-08-04 23:56:53 +00:00
2013-09-28 00:12:32 +00:00
2013-09-28 00:12:32 +00:00
2013-08-16 00:37:11 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-08-22 21:28:54 +00:00
2013-07-25 18:35:14 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-09-07 01:14:42 +00:00
2013-08-30 19:40:56 +00:00
2013-09-06 23:28:24 +00:00
2013-07-14 06:24:09 +00:00
2013-07-13 20:38:47 +00:00
2013-09-01 04:12:59 +00:00
2013-07-14 06:24:09 +00:00
2013-08-21 22:20:53 +00:00
2013-07-14 06:24:09 +00:00
2013-05-25 03:26:51 +00:00
2013-07-13 20:38:47 +00:00
2013-07-26 18:34:25 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-12 23:33:22 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-08-22 21:28:54 +00:00
2013-08-07 04:00:26 +00:00
2013-07-26 20:58:55 +00:00
2013-07-12 23:33:22 +00:00