Robin Morisset
880580b88f
[X86] Fix a bug with fetch_add(INT32_MIN)
...
Summary:
Fix pr21099
The pseudocode of what we were doing (spread through two functions) was:
if (operand.doesNotFitIn32Bits())
Opc.initializeWithFoo();
if (operand < 0)
operand = -operand;
if (operand.doesFitIn8Bits())
Opc.initializeWithBar();
else if (operand.doesFitIn32Bits())
Opc.initializeWithBlah();
doStuff(Opc);
So for operand == INT32_MIN, Opc was never initialized because the operand changes
from fitting in 32 bits to not fitting, causing the various bugs/error messages
noted by pr21099.
This patch adds an extra test at the beginning for this case, and an
llvm_unreachable to have better error message if the operand ends up
not fitting in 32-bits at the end.
Test Plan: new test + make check
Reviewers: jfb
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D5655
llvm-svn: 219257
2014-10-07 23:53:57 +00:00
..
2014-06-09 22:42:55 +00:00
2014-06-25 12:41:52 +00:00
2014-07-30 22:51:54 +00:00
2014-07-15 03:00:41 +00:00
2014-05-28 18:15:43 +00:00
2014-10-03 20:01:09 +00:00
2014-06-25 12:41:52 +00:00
2014-08-28 03:41:28 +00:00
2014-10-03 20:01:09 +00:00
2014-07-01 18:53:31 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-07-24 22:15:28 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-06-13 14:24:07 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-09-02 13:54:53 +00:00
2014-10-04 03:52:55 +00:00
2014-10-01 03:19:43 +00:00
2014-08-02 00:50:10 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-08-29 21:53:01 +00:00
2014-06-09 14:20:23 +00:00
2014-06-09 12:32:53 +00:00
2014-09-03 07:11:34 +00:00
2014-09-11 17:50:20 +00:00
2014-07-15 16:24:24 +00:00
2014-10-03 20:00:34 +00:00
2014-07-16 22:40:28 +00:00
2014-08-21 09:43:43 +00:00
2014-07-30 22:51:54 +00:00
2014-08-20 19:58:59 +00:00
2014-08-07 09:41:19 +00:00
2014-04-19 22:45:44 +00:00
2014-06-03 21:01:39 +00:00
2014-07-01 18:53:31 +00:00
2014-07-01 18:53:31 +00:00
2014-07-01 18:53:31 +00:00
2014-07-01 18:53:31 +00:00
2014-07-14 15:31:13 +00:00
2014-07-01 18:53:31 +00:00
2014-09-25 17:27:43 +00:00
2014-09-02 22:16:29 +00:00
2014-07-01 18:53:31 +00:00
2014-09-23 20:59:25 +00:00
2014-07-01 18:53:31 +00:00
2014-07-14 16:28:13 +00:00
2014-07-01 18:53:31 +00:00
2014-05-20 19:25:04 +00:00
2014-09-06 10:00:01 +00:00
2014-09-06 10:00:01 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 03:52:55 +00:00
2014-10-05 11:41:36 +00:00
2014-08-18 11:59:06 +00:00
2014-06-18 14:04:37 +00:00
2014-08-14 17:13:33 +00:00
2014-05-12 07:18:51 +00:00
2014-07-02 14:11:05 +00:00
2014-09-25 23:48:47 +00:00
2014-09-30 12:15:52 +00:00
2014-07-28 13:46:45 +00:00
2014-08-06 15:40:34 +00:00
2014-06-18 16:51:10 +00:00
2014-08-21 13:28:02 +00:00
2014-10-05 14:11:08 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 03:52:55 +00:00
2014-09-30 12:15:52 +00:00
2014-07-28 13:46:45 +00:00
2014-09-26 09:48:50 +00:00
2014-08-29 08:46:04 +00:00
2014-09-30 12:15:52 +00:00
2014-09-26 09:48:50 +00:00
2014-08-29 08:46:04 +00:00
2014-07-28 13:46:45 +00:00
2014-09-30 12:15:52 +00:00
2014-09-26 09:48:50 +00:00
2014-08-13 10:46:00 +00:00
2014-08-29 08:46:04 +00:00
2014-10-04 03:52:55 +00:00
2014-06-25 12:41:52 +00:00
2014-09-06 10:00:01 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 03:52:55 +00:00
2014-10-05 19:14:34 +00:00
2014-09-30 02:52:28 +00:00
2014-07-23 07:08:53 +00:00
2014-04-22 07:40:34 +00:00
2014-04-19 13:47:43 +00:00
2014-07-03 07:04:38 +00:00
2014-08-06 18:09:15 +00:00
2014-05-05 16:47:07 +00:00
2014-06-06 21:08:55 +00:00
2014-06-13 17:29:39 +00:00
2014-06-13 17:29:39 +00:00
2014-06-13 14:24:07 +00:00
2014-09-16 22:36:07 +00:00
2014-05-13 15:42:45 +00:00
2014-09-19 01:14:56 +00:00
2014-06-27 18:19:56 +00:00
2014-09-20 21:18:43 +00:00
2014-05-30 23:17:53 +00:00
2014-05-15 15:18:15 +00:00
2014-05-15 15:18:15 +00:00
2014-10-04 03:52:55 +00:00
2014-05-08 17:44:04 +00:00
2014-05-15 15:45:31 +00:00
2014-05-30 15:00:45 +00:00
2014-05-05 18:10:15 +00:00
2014-07-15 03:00:39 +00:00
2014-07-14 22:57:27 +00:00
2014-09-05 18:03:38 +00:00
2014-08-20 18:03:00 +00:00
2014-07-17 11:12:12 +00:00
2014-06-12 16:04:47 +00:00
2014-10-03 20:01:09 +00:00
2014-10-03 20:01:09 +00:00
2014-07-23 07:08:53 +00:00
2014-07-30 22:51:54 +00:00
2014-07-30 22:51:54 +00:00
2014-09-09 01:13:36 +00:00
2014-10-03 20:01:09 +00:00
2014-06-27 18:19:56 +00:00
2014-06-27 18:19:56 +00:00
2014-09-15 18:32:58 +00:00
2014-10-04 03:52:55 +00:00
2014-04-26 02:58:04 +00:00
2014-10-04 03:52:55 +00:00
2014-04-18 10:45:33 +00:00
2014-06-13 12:05:06 +00:00
2014-06-12 20:12:34 +00:00
2014-06-13 00:45:11 +00:00
2014-06-16 23:58:24 +00:00
2014-08-19 19:44:10 +00:00
2014-06-17 21:55:43 +00:00
2014-08-19 19:44:13 +00:00
2014-06-12 23:27:57 +00:00
2014-08-19 19:44:10 +00:00
2014-06-23 21:55:36 +00:00
2014-06-23 21:55:36 +00:00
2014-06-25 20:06:12 +00:00
2014-06-23 21:55:44 +00:00
2014-06-23 21:55:40 +00:00
2014-06-23 21:55:36 +00:00
2014-06-13 02:21:58 +00:00
2014-07-30 22:51:54 +00:00
2014-08-19 19:44:10 +00:00
2014-09-08 20:24:10 +00:00
2014-07-03 15:06:47 +00:00
2014-05-07 22:52:58 +00:00
2014-07-17 17:14:35 +00:00
2014-09-11 16:08:44 +00:00
2014-10-01 21:20:06 +00:00
2014-05-19 19:45:57 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 03:52:55 +00:00
2014-10-03 20:01:09 +00:00
2014-08-07 09:41:19 +00:00
2014-06-25 12:41:52 +00:00
2014-08-28 20:13:31 +00:00
2014-06-12 10:53:48 +00:00
2014-06-19 10:29:41 +00:00
2014-07-18 13:01:25 +00:00
2014-07-24 22:15:28 +00:00
2014-07-24 19:53:33 +00:00
2014-04-29 10:06:10 +00:00
2014-08-01 22:19:41 +00:00
2014-07-24 22:15:28 +00:00
2014-07-30 22:51:54 +00:00
2014-06-05 19:29:43 +00:00
2014-06-05 19:29:43 +00:00
2014-08-20 11:59:22 +00:00
2014-08-20 11:59:22 +00:00
2014-08-20 11:59:22 +00:00
2014-08-20 11:59:22 +00:00
2014-08-20 11:59:22 +00:00
2014-06-18 11:52:44 +00:00
2014-06-09 22:42:55 +00:00
2014-05-14 21:14:37 +00:00
2014-10-01 15:22:13 +00:00
2014-07-24 22:15:28 +00:00
2014-04-15 19:30:48 +00:00
2014-05-19 20:38:59 +00:00
2014-10-03 20:01:09 +00:00
2014-06-27 18:19:56 +00:00
2014-05-20 19:25:04 +00:00
2014-08-29 20:50:31 +00:00
2014-08-02 00:50:10 +00:00
2014-05-06 01:20:42 +00:00
2014-10-03 01:06:32 +00:00
2014-08-01 21:54:37 +00:00
2014-08-06 18:09:04 +00:00
2014-04-29 23:55:41 +00:00
2014-08-29 21:42:08 +00:00
2014-04-29 23:55:41 +00:00
2014-05-06 16:51:25 +00:00
2014-05-06 16:51:25 +00:00
2014-07-23 07:08:53 +00:00
2014-10-03 20:01:09 +00:00
2014-08-19 19:44:06 +00:00
2014-10-04 03:52:55 +00:00
2014-10-02 22:21:49 +00:00
2014-10-02 22:21:49 +00:00
2014-05-14 16:14:45 +00:00
2014-09-15 19:00:31 +00:00
2014-10-04 03:52:55 +00:00
2014-07-01 18:53:31 +00:00
2014-10-04 03:52:55 +00:00
2014-10-03 01:06:32 +00:00
2014-07-24 22:15:28 +00:00
2014-07-03 15:19:40 +00:00
2014-06-25 03:05:47 +00:00
2014-10-07 23:53:57 +00:00
2014-09-22 18:07:20 +00:00
2014-07-07 23:25:23 +00:00
2014-06-30 17:14:21 +00:00
2014-04-24 20:14:08 +00:00
2014-04-30 19:17:32 +00:00
2014-05-22 16:21:39 +00:00
2014-08-08 08:21:19 +00:00
2014-09-22 13:11:35 +00:00
2014-09-22 13:11:35 +00:00
2014-08-04 21:29:59 +00:00
2014-10-06 20:19:47 +00:00
2014-07-10 18:21:04 +00:00
2014-07-13 21:02:14 +00:00
2014-10-05 22:57:31 +00:00
2014-09-25 23:14:26 +00:00
2014-09-22 18:54:01 +00:00
2014-06-11 23:11:02 +00:00
2014-10-04 03:52:55 +00:00
2014-06-25 13:12:54 +00:00
2014-10-04 03:52:55 +00:00
2014-09-16 00:24:42 +00:00
2014-09-16 00:15:20 +00:00
2014-10-04 03:52:55 +00:00
2014-09-06 10:00:01 +00:00
2014-09-06 10:00:01 +00:00
2014-10-05 22:57:31 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 03:52:55 +00:00
2014-07-25 19:31:34 +00:00
2014-10-03 20:01:09 +00:00
2014-04-17 19:08:36 +00:00
2014-10-03 20:01:09 +00:00
2014-10-02 22:21:49 +00:00
2014-10-02 22:21:49 +00:00
2014-10-02 22:21:49 +00:00
2014-10-02 22:21:49 +00:00
2014-10-02 22:21:49 +00:00
2014-05-20 17:40:03 +00:00
2014-07-24 22:15:28 +00:00
2014-10-04 03:52:55 +00:00
2014-07-08 15:22:29 +00:00
2014-07-24 22:09:56 +00:00
2014-08-20 19:00:37 +00:00
2014-07-10 18:00:53 +00:00
2014-04-18 21:10:11 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 03:52:55 +00:00
2014-10-03 20:01:09 +00:00
2014-10-05 22:57:31 +00:00
2014-08-22 21:59:26 +00:00
2014-08-29 21:25:28 +00:00
2014-08-22 21:59:26 +00:00
2014-10-04 03:52:55 +00:00
2014-09-12 15:10:56 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 04:22:55 +00:00
2014-08-05 20:16:35 +00:00
2014-08-14 15:15:28 +00:00
2014-07-16 15:37:08 +00:00
2014-10-04 03:52:55 +00:00
2014-07-15 02:44:49 +00:00
2014-10-04 03:52:55 +00:00
2014-06-21 12:56:42 +00:00
2014-08-28 18:59:22 +00:00
2014-09-05 22:26:22 +00:00
2014-10-04 03:52:55 +00:00
2014-07-07 19:03:32 +00:00
2014-10-04 03:52:55 +00:00
2014-10-04 03:52:55 +00:00
2014-10-05 22:57:31 +00:00
2014-10-03 21:38:49 +00:00
2014-10-01 00:41:21 +00:00
2014-10-05 12:07:34 +00:00
2014-10-05 11:41:36 +00:00
2014-10-02 21:37:14 +00:00
2014-10-01 00:41:21 +00:00
2014-10-01 00:41:21 +00:00
2014-10-05 11:41:36 +00:00
2014-10-05 22:57:31 +00:00
2014-10-03 11:25:58 +00:00
2014-10-05 12:07:34 +00:00
2014-10-04 03:52:55 +00:00
2014-07-24 22:15:28 +00:00
2014-07-09 10:06:58 +00:00
2014-07-08 08:45:38 +00:00
2014-07-24 22:15:28 +00:00
2014-09-19 20:00:32 +00:00
2014-07-24 22:15:28 +00:00
2014-10-04 03:52:55 +00:00
2014-05-09 22:32:13 +00:00
2014-08-04 21:05:27 +00:00
2014-06-25 12:41:52 +00:00
2014-09-02 18:42:44 +00:00
2014-07-15 02:34:12 +00:00
2014-09-17 07:09:23 +00:00
2014-09-17 07:09:23 +00:00
2014-09-17 07:09:23 +00:00
2014-09-17 07:09:23 +00:00
2014-06-07 21:23:09 +00:00
2014-07-30 22:51:54 +00:00
2014-05-12 22:01:27 +00:00
2014-08-07 09:41:19 +00:00
2014-06-17 23:22:41 +00:00
2014-07-24 22:15:28 +00:00
2014-07-30 20:26:09 +00:00
2014-07-24 22:15:28 +00:00
2014-05-29 23:52:53 +00:00
2014-08-19 19:44:06 +00:00