about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVishnunarayan K I <appukuttancr@gmail.com>2020-12-02 17:45:11 +0530
committerVishnunarayan K I <appukuttancr@gmail.com>2020-12-02 17:45:11 +0530
commit899a59e7ca7817e8c0f56c474186854c7eb5ea9b (patch)
tree350cadad61147903a5586081fccc21616f07e622
parent1b7fe09025f6dfc7f134243fd672ad2c490b466b (diff)
downloadrust-899a59e7ca7817e8c0f56c474186854c7eb5ea9b.tar.gz
rust-899a59e7ca7817e8c0f56c474186854c7eb5ea9b.zip
rename MemoryKind::Heap to ConstHeap; bless test
-rw-r--r--compiler/rustc_mir/src/interpret/intern.rs5
-rw-r--r--compiler/rustc_mir/src/interpret/intrinsics.rs7
-rw-r--r--compiler/rustc_mir/src/interpret/memory.rs6
-rw-r--r--src/test/ui/consts/const-eval/erroneous-const.rs4
-rw-r--r--src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs5
-rw-r--r--src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr8
-rw-r--r--src/test/ui/consts/const-eval/unwind-abort.rs2
-rw-r--r--src/test/ui/consts/uninhabited-const-issue-61744.rs2
-rw-r--r--src/test/ui/infinite/infinite-recursion-const-fn.rs2
9 files changed, 27 insertions, 14 deletions
diff --git a/compiler/rustc_mir/src/interpret/intern.rs b/compiler/rustc_mir/src/interpret/intern.rs
index 443ef072647..db996f72128 100644
--- a/compiler/rustc_mir/src/interpret/intern.rs
+++ b/compiler/rustc_mir/src/interpret/intern.rs
@@ -104,7 +104,10 @@ fn intern_shallow<'rt, 'mir, 'tcx, M: CompileTimeMachine<'mir, 'tcx>>(
     // This match is just a canary for future changes to `MemoryKind`, which most likely need
     // changes in this function.
     match kind {
-        MemoryKind::Stack | MemoryKind::Heap | MemoryKind::Vtable | MemoryKind::CallerLocation => {}
+        MemoryKind::Stack
+        | MemoryKind::ConstHeap
+        | MemoryKind::Vtable
+        | MemoryKind::CallerLocation => {}
     }
     // Set allocation mutability as appropriate. This is used by LLVM to put things into
     // read-only memory, and also by Miri when evaluating other globals that
diff --git a/compiler/rustc_mir/src/interpret/intrinsics.rs b/compiler/rustc_mir/src/interpret/intrinsics.rs
index 4bc263730c3..84a53a589a5 100644
--- a/compiler/rustc_mir/src/interpret/intrinsics.rs
+++ b/compiler/rustc_mir/src/interpret/intrinsics.rs
@@ -347,8 +347,11 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
                     Err(err) => throw_ub_format!("align has to be a power of 2, {}", err),
                 };
 
-                let ptr =
-                    self.memory.allocate(Size::from_bytes(size as u64), align, MemoryKind::Heap);
+                let ptr = self.memory.allocate(
+                    Size::from_bytes(size as u64),
+                    align,
+                    MemoryKind::ConstHeap,
+                );
                 self.write_scalar(Scalar::Ptr(ptr), dest)?;
             }
             sym::offset => {
diff --git a/compiler/rustc_mir/src/interpret/memory.rs b/compiler/rustc_mir/src/interpret/memory.rs
index 1319ecd5b2e..47d0fce51b1 100644
--- a/compiler/rustc_mir/src/interpret/memory.rs
+++ b/compiler/rustc_mir/src/interpret/memory.rs
@@ -28,7 +28,7 @@ pub enum MemoryKind<T> {
     /// Stack memory. Error if deallocated except during a stack pop.
     Stack,
     /// Heap memory.
-    Heap,
+    ConstHeap,
     /// Memory backing vtables. Error if ever deallocated.
     Vtable,
     /// Memory allocated by `caller_location` intrinsic. Error if ever deallocated.
@@ -42,7 +42,7 @@ impl<T: MayLeak> MayLeak for MemoryKind<T> {
     fn may_leak(self) -> bool {
         match self {
             MemoryKind::Stack => false,
-            MemoryKind::Heap => false,
+            MemoryKind::ConstHeap => false,
             MemoryKind::Vtable => true,
             MemoryKind::CallerLocation => true,
             MemoryKind::Machine(k) => k.may_leak(),
@@ -54,7 +54,7 @@ impl<T: fmt::Display> fmt::Display for MemoryKind<T> {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         match self {
             MemoryKind::Stack => write!(f, "stack variable"),
-            MemoryKind::Heap => write!(f, "heap allocation"),
+            MemoryKind::ConstHeap => write!(f, "heap allocation"),
             MemoryKind::Vtable => write!(f, "vtable"),
             MemoryKind::CallerLocation => write!(f, "caller location"),
             MemoryKind::Machine(m) => write!(f, "{}", m),
diff --git a/src/test/ui/consts/const-eval/erroneous-const.rs b/src/test/ui/consts/const-eval/erroneous-const.rs
index 3df491bf229..16bf1adf7db 100644
--- a/src/test/ui/consts/const-eval/erroneous-const.rs
+++ b/src/test/ui/consts/const-eval/erroneous-const.rs
@@ -9,11 +9,11 @@ impl<T> PrintName<T> {
 
 const fn no_codegen<T>() {
     if false {
-        let _ = PrintName::<T>::VOID; //~ERROR evaluation of constant value failed
+        let _ = PrintName::<T>::VOID; //~ERROR could not evaluate static initializer
     }
 }
 
-pub static FOO: () = no_codegen::<i32>(); //~ERROR could not evaluate static initializer
+pub static FOO: () = no_codegen::<i32>();
 
 fn main() {
     FOO
diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs
index de7fb65f685..e6ef9974aa8 100644
--- a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs
+++ b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs
@@ -1,11 +1,11 @@
-// run-pass
 #![feature(core_intrinsics)]
 #![feature(const_heap)]
 #![feature(const_raw_ptr_deref)]
 #![feature(const_mut_refs)]
 use std::intrinsics;
 
-const FOO: &i32 = foo();
+const FOO: *const i32 = foo();
+//~^ ERROR untyped pointers are not allowed in constant
 
 const fn foo() -> &'static i32 {
     let t = unsafe {
@@ -16,5 +16,4 @@ const fn foo() -> &'static i32 {
     unsafe { &*t }
 }
 fn main() {
-    assert_eq!(*FOO, 20)
 }
diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr
new file mode 100644
index 00000000000..08679350d6d
--- /dev/null
+++ b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.stderr
@@ -0,0 +1,8 @@
+error: untyped pointers are not allowed in constant
+  --> $DIR/alloc_intrinsic_nontransient_fail.rs:7:1
+   |
+LL | const FOO: *const i32 = foo();
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/consts/const-eval/unwind-abort.rs b/src/test/ui/consts/const-eval/unwind-abort.rs
index b9e63e2fa20..2dc8e14bed5 100644
--- a/src/test/ui/consts/const-eval/unwind-abort.rs
+++ b/src/test/ui/consts/const-eval/unwind-abort.rs
@@ -2,7 +2,7 @@
 
 #[unwind(aborts)]
 const fn foo() {
-    panic!() //~ 5:13: any use of this value will cause an error [const_err]
+    panic!() //~ ERROR any use of this value will cause an error [const_err]
 }
 
 const _: () = foo();
diff --git a/src/test/ui/consts/uninhabited-const-issue-61744.rs b/src/test/ui/consts/uninhabited-const-issue-61744.rs
index 7fb1dc988bb..2f4b7578d1c 100644
--- a/src/test/ui/consts/uninhabited-const-issue-61744.rs
+++ b/src/test/ui/consts/uninhabited-const-issue-61744.rs
@@ -1,7 +1,7 @@
 // build-fail
 
 pub const unsafe fn fake_type<T>() -> T {
-    hint_unreachable() //~ 4:23: any use of this value will cause an error [const_err]
+    hint_unreachable() //~ ERROR any use of this value will cause an error [const_err]
 }
 
 pub const unsafe fn hint_unreachable() -> ! {
diff --git a/src/test/ui/infinite/infinite-recursion-const-fn.rs b/src/test/ui/infinite/infinite-recursion-const-fn.rs
index 2e812dc53a6..4209153116d 100644
--- a/src/test/ui/infinite/infinite-recursion-const-fn.rs
+++ b/src/test/ui/infinite/infinite-recursion-const-fn.rs
@@ -1,7 +1,7 @@
 //https://github.com/rust-lang/rust/issues/31364
 
 const fn a() -> usize {
-    b() //~ 4:8: evaluation of constant value failed [E0080]
+    b() //~ ERROR evaluation of constant value failed [E0080]
 }
 const fn b() -> usize {
     a()