re PR inline-asm/84625 (ICE with empty constraint and vector constant)
authorJakub Jelinek <jakub@gcc.gnu.org>
Fri, 2 Mar 2018 07:57:26 +0000 (08:57 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 2 Mar 2018 07:57:26 +0000 (08:57 +0100)
PR inline-asm/84625
* config/i386/i386.c (ix86_print_operand): Use conditional
output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
zero vector.

* gcc.target/i386/pr84625.c: New test.

From-SVN: r258125

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr84625.c [new file with mode: 0644]

index 6200f2f4f47d83966d4f839005fb2002db7a20ee..bb32cf440e2016216a14f76516c4bf9fffe3fe0a 100644 (file)
@@ -1,3 +1,10 @@
+2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR inline-asm/84625
+       * config/i386/i386.c (ix86_print_operand): Use conditional
+       output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
+       zero vector.
+
 2018-03-02  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/84427
        they act more like predicates and should be subject to
        "lost tail" side-effect preserving.
 
-2018-02-28  Alexandre Oliva <aoliva@redhat.com>
+2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
 
        PR rtl-optimization/81611
        * auto-inc-dec.c (attempt_change): Move dead note from
        'ggc' suffixes.  Change first column width.
        (timer::print): Fix formatting of the column.
 
-2018-02-27  Alexandre Oliva <aoliva@redhat.com>
+2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
 
        * tree-ssa-live.c (remove_unused_scope_block_p): Do not
        preserve inline entry blocks for the sake of debug inline
        (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
        to named insn, correct maximum insn length.
 
-2018-02-14  Jozef Lawrynowicz <jozefl.gcc@gmail.com>
+2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
 
        PR target/79242
        * machmode.def: Define a complex mode for PARTIAL_INT.
        * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
        ARGS as unused.
 
-2018-02-13  Alexandre Oliva <aoliva@redhat.com>
+2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
 
        PR debug/84342
        PR debug/84319
        handling.  Also check whether the anti-range contains any values
        that satisfy the mask; switch to a VR_RANGE if not.
 
-2018-02-13  Paolo Bonzini <bonzini@gnu.org>
+2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
 
        PR sanitizer/84340
        * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
        (vectorizable_condition): Likewise.
        (vectorizable_comparison): Likewise.
 
-2018-02-12  Paolo Bonzini <bonzini@gnu.org>
+2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
 
        PR sanitizer/84307
        * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
        * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
        Cast vec_cmpgt result to correct type.
 
-2018-02-11  Alexandre Oliva <aoliva@redhat.com>
+2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
 
        * final.c (final_scan_insn_1): Renamed from...
        (final_scan_insn): ... this.  New wrapper, to recover
        * config/s390/s390.c (s390_set_current_function): Invoke
        s390_indirect_branch_settings also if fndecl didn't change.
 
-2018-02-09  Alexandre Oliva <aoliva@redhat.com>
+2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
 
        * config/rs6000/rs6000.md (blockage): Set length to zero.
 
        Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
        Sync some changes from cxx_fold_indirect_ref.
 
-2018-02-09  Alexandre Oliva <aoliva@redhat.com>
+2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
 
        * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
        markers.
        dependence against last_pending_memory_flush in addition to
        pending_jump_insns.
 
-2018-01-30  Alexandre Oliva <aoliva@redhat.com>
+2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
 
        PR tree-optimization/81611
        * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
        Turning off pre increment/decrement/modify allows IVOPTS to
        optimize DF/SF loops where the index is an int.
 
-2018-01-29  Richard Biener <rguenther@suse.de>
+2018-01-29  Richard Biener  <rguenther@suse.de>
            Kelvin Nilsen  <kelvin@gcc.gnu.org>
 
        PR bootstrap/80867
        targetm.vectorize_builtin_md_vectorized_function if callee is
        NULL.
 
-2018-01-22 Carl Love <cel@us.ibm.com>
+2018-01-22  Carl Love  <cel@us.ibm.com>
 
        * doc/extend.tex: Fix typo in second arg in
        __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
        * config/arc/constraints.md (Csc): New constraint.
 
 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
-           John Eric Martin <John.Martin@emmicro-us.com>
+           John Eric Martin  <John.Martin@emmicro-us.com>
 
        * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
        * config/arc/arc.c (_arc_jli_section): New struct.
 
        * config/rl78/rl78.md (smaxdi3): New define_expand.
 
-2018-01-22 Carl Love <cel@us.ibm.com>
+2018-01-22  Carl Love  <cel@us.ibm.com>
 
        * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
        LVX_V1TI): Add macro expansion.
        Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
 
 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
-           David Edelsohn <dje.gcc@gmail.com>
+           David Edelsohn  <dje.gcc@gmail.com>
 
        PR target/83946
        * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
index 49f872d103fd93841074677378713cee92d372c7..1843e5d3377bc855207d5771b7f970cb41f6e282 100644 (file)
@@ -18743,7 +18743,8 @@ ix86_print_operand (FILE *file, rtx x, int code)
         since we can in fact encode that into an immediate.  */
       if (GET_CODE (x) == CONST_VECTOR)
        {
-         gcc_assert (x == CONST0_RTX (GET_MODE (x)));
+         if (x != CONST0_RTX (GET_MODE (x)))
+           output_operand_lossage ("invalid vector immediate");
          x = const0_rtx;
        }
 
index d5aa006d8f83ba5aeab6169da2c1c94ace2b0601..b035c357dbe57b92e3ebb199af0fa3d58cb78fbf 100644 (file)
@@ -1,3 +1,8 @@
+2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR inline-asm/84625
+       * gcc.target/i386/pr84625.c: New test.
+
 2018-03-02  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/84427
        * g++.dg/gomp/pr84556.C: New test.
        * g++.dg/vect/pr84556.cc: New test.
 
-2018-02-26  Dominique d'Humieres <dominiq@gcc.gnu.org>
+2018-02-26  Dominique d'Humieres  <dominiq@gcc.gnu.org>
 
        PR fortran/32957
        * gfortran.dg/c_f_pointer_shape_tests_2.f03: Use explicit KIND c_int.
        PR fortran/78238
        * gfortran.dg/select_type_40.f90: New test.
 
-2018-02-24  Steven G. Kargl <kargl@gcc.gnu.org>
+2018-02-24  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/30792
        * gfortran.dg/data_substring.f90: New test.
        PR target/83831
        * gcc.target/rx/pr83831.c: New tests.
 
-2018-02-14  Jozef Lawrynowicz <jozefl.gcc@gmail.com>
+2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
 
        PR target/79242
        * gcc.target/msp430/pr79242.c: New test.
        PR c++/71662
        * g++.dg/cpp0x/scoped_enum7.C: New.
 
-2018-02-07  Christophe Lyon <christophe.lyon@linaro.org>
+2018-02-07  Christophe Lyon  <christophe.lyon@linaro.org>
 
        PR tree-optimization/83008
        * gcc.dg/cse_recip.c: Add -fno-tree-slp-vectorize.
        PR middle-end/79966
        * gfortran.dg/pr79966.f90: New testcase
 
-2018-02-04  Dominique d'Humieres <dominiq@gcc.gnu.org>
+2018-02-04  Dominique d'Humieres  <dominiq@gcc.gnu.org>
 
        PR fortran/84094
        * gfortran.dg/associate_23.f90: Fix invalid code.
        PR c++/81933
        * g++.dg/cpp1y/constexpr-empty4.C: New test.
 
-2018-01-22  Will Schmidt <will_schmidt@vnet.ibm.com>
+2018-01-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
 
        * gcc.target/powerpc/fold-vec-abs-short-fwrap.c: Add xxspltib to
        scan-asembler valid instructions list.
        * gcc.dg/pr83666.c: Likewise.
 
 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
-           David Edelsohn <dje.gcc@gmail.com>
+           David Edelsohn  <dje.gcc@gmail.com>
 
        PR target/83946
        * gcc.target/powerpc/safe-indirect-jump-1.c: Change expected
        PR c++/81013
        * g++.dg/inherit/union3.C: New.
 
-2018-01-18  Christophe Lyon <christophe.lyon@linaro.org>
+2018-01-18  Christophe Lyon  <christophe.lyon@linaro.org>
 
        * gcc.dg/rtl/arm/stl-cond.c: Enable on arm*.
 
        PR ipa/83619
        * g++.dg/torture/pr83619.C: New testcase.
 
-2018-01-18  Christophe Lyon <christophe.lyon@linaro.org>
+2018-01-18  Christophe Lyon  <christophe.lyon@linaro.org>
 
        * lib/target-supports.exp (check_effective_target_arm_arch_FUNC_ok):
        Add function body to force error messages in some configurations.
        PR target/83330
        * gcc.target/i386/pr83330.c: New test.
 
-2018-01-11  Steven G. Kargl <kargl@gcc.gnu.org>
+2018-01-11  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/79383
        * gfortran.dg/dtio_31.f03: New test.
        PR fortran/83741
        * gfortran.dg/allocate_assumed_charlen_3.f90: New test.
 
-2018-01-08  Chih-Mao Chen <pkmx.tw@gmail.com>
+2018-01-08  Chih-Mao Chen  <pkmx.tw@gmail.com>
            Monk Chiang  <sh.chiang04@gmail.com>
 
        * gcc.target/riscv/save-restore-1.c: New.
        * g++.dg/pr81308-1.C: New test.
        * g++.dg/pr81308-2.C: New test.
 
-2018-01-08  Vidya Praveen <vidyapraveen@arm.com>
+2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
 
        PR target/83663 - Revert r255946
        * gcc.target/aarch64/vect-slp-dup.c: New.
diff --git a/gcc/testsuite/gcc.target/i386/pr84625.c b/gcc/testsuite/gcc.target/i386/pr84625.c
new file mode 100644 (file)
index 0000000..600a6f1
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR inline-asm/84625 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+typedef int V __attribute__((vector_size (16)));
+
+void
+foo (void)
+{
+  asm volatile ("# %0" : : "X" ((V) { 1, 2, 3, 4 }));  // { dg-error "invalid vector immediate" }
+  asm volatile ("# %0" : : "" ((V) { 2, 3, 4, 5 }));   // { dg-error "invalid vector immediate" }
+}