[Parallel_libs-commits] [parallel-libs] r281118 - [SE] Remove Utils directory

Jason Henline via Parallel_libs-commits parallel_libs-commits at lists.llvm.org
Fri Sep 9 16:33:58 PDT 2016


Author: jhen
Date: Fri Sep  9 18:33:58 2016
New Revision: 281118

URL: http://llvm.org/viewvc/llvm-project?rev=281118&view=rev
Log:
[SE] Remove Utils directory

Summary:
There is no purpose in splitting out the Error class from the rest of
the StreamExecutor code. This organization was just a vestige of an old
failed design.

Plus, this change fixes a bug in the build where the utilites library
was not being statically linked in with libstreamexecutor.

Reviewers: jlebar, jprice

Subscribers: beanz, parallel_libs-commits

Differential Revision: https://reviews.llvm.org/D24434

Added:
    parallel-libs/trunk/streamexecutor/include/streamexecutor/Error.h
      - copied, changed from r281091, parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h
    parallel-libs/trunk/streamexecutor/lib/Error.cpp
      - copied, changed from r281091, parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp
Removed:
    parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h
    parallel-libs/trunk/streamexecutor/lib/Utils/CMakeLists.txt
    parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp
Modified:
    parallel-libs/trunk/streamexecutor/include/streamexecutor/Device.h
    parallel-libs/trunk/streamexecutor/include/streamexecutor/DeviceMemory.h
    parallel-libs/trunk/streamexecutor/include/streamexecutor/Kernel.h
    parallel-libs/trunk/streamexecutor/include/streamexecutor/Platform.h
    parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformDevice.h
    parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformManager.h
    parallel-libs/trunk/streamexecutor/include/streamexecutor/Stream.h
    parallel-libs/trunk/streamexecutor/lib/CMakeLists.txt

Modified: parallel-libs/trunk/streamexecutor/include/streamexecutor/Device.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/Device.h?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/Device.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/Device.h Fri Sep  9 18:33:58 2016
@@ -17,9 +17,9 @@
 
 #include <type_traits>
 
+#include "streamexecutor/Error.h"
 #include "streamexecutor/KernelSpec.h"
 #include "streamexecutor/PlatformDevice.h"
-#include "streamexecutor/Utils/Error.h"
 
 namespace streamexecutor {
 

Modified: parallel-libs/trunk/streamexecutor/include/streamexecutor/DeviceMemory.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/DeviceMemory.h?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/DeviceMemory.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/DeviceMemory.h Fri Sep  9 18:33:58 2016
@@ -32,7 +32,7 @@
 #include <cassert>
 #include <cstddef>
 
-#include "streamexecutor/Utils/Error.h"
+#include "streamexecutor/Error.h"
 
 namespace streamexecutor {
 

Copied: parallel-libs/trunk/streamexecutor/include/streamexecutor/Error.h (from r281091, parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h)
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/Error.h?p2=parallel-libs/trunk/streamexecutor/include/streamexecutor/Error.h&p1=parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h&r1=281091&r2=281118&rev=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/Error.h Fri Sep  9 18:33:58 2016
@@ -160,8 +160,8 @@
 ///
 //===----------------------------------------------------------------------===//
 
-#ifndef STREAMEXECUTOR_UTILS_ERROR_H
-#define STREAMEXECUTOR_UTILS_ERROR_H
+#ifndef STREAMEXECUTOR_ERROR_H
+#define STREAMEXECUTOR_ERROR_H
 
 #include <cstdio>
 #include <cstdlib>
@@ -212,4 +212,4 @@ void dieIfError(Error &&E);
 
 } // namespace streamexecutor
 
-#endif // STREAMEXECUTOR_UTILS_ERROR_H
+#endif // STREAMEXECUTOR_ERROR_H

Modified: parallel-libs/trunk/streamexecutor/include/streamexecutor/Kernel.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/Kernel.h?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/Kernel.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/Kernel.h Fri Sep  9 18:33:58 2016
@@ -21,8 +21,8 @@
 #ifndef STREAMEXECUTOR_KERNEL_H
 #define STREAMEXECUTOR_KERNEL_H
 
+#include "streamexecutor/Error.h"
 #include "streamexecutor/KernelSpec.h"
-#include "streamexecutor/Utils/Error.h"
 
 #include <memory>
 

Modified: parallel-libs/trunk/streamexecutor/include/streamexecutor/Platform.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/Platform.h?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/Platform.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/Platform.h Fri Sep  9 18:33:58 2016
@@ -18,7 +18,7 @@
 #ifndef STREAMEXECUTOR_PLATFORM_H
 #define STREAMEXECUTOR_PLATFORM_H
 
-#include "streamexecutor/Utils/Error.h"
+#include "streamexecutor/Error.h"
 
 namespace streamexecutor {
 

Modified: parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformDevice.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformDevice.h?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformDevice.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformDevice.h Fri Sep  9 18:33:58 2016
@@ -20,10 +20,10 @@
 #define STREAMEXECUTOR_PLATFORMDEVICE_H
 
 #include "streamexecutor/DeviceMemory.h"
+#include "streamexecutor/Error.h"
 #include "streamexecutor/Kernel.h"
 #include "streamexecutor/LaunchDimensions.h"
 #include "streamexecutor/PackedKernelArgumentArray.h"
-#include "streamexecutor/Utils/Error.h"
 
 namespace streamexecutor {
 

Modified: parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformManager.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformManager.h?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformManager.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/PlatformManager.h Fri Sep  9 18:33:58 2016
@@ -21,8 +21,8 @@
 
 #include <map>
 
+#include "streamexecutor/Error.h"
 #include "streamexecutor/Platform.h"
-#include "streamexecutor/Utils/Error.h"
 
 namespace streamexecutor {
 

Modified: parallel-libs/trunk/streamexecutor/include/streamexecutor/Stream.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/Stream.h?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/Stream.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/Stream.h Fri Sep  9 18:33:58 2016
@@ -35,11 +35,11 @@
 #include <string>
 
 #include "streamexecutor/DeviceMemory.h"
+#include "streamexecutor/Error.h"
 #include "streamexecutor/Kernel.h"
 #include "streamexecutor/LaunchDimensions.h"
 #include "streamexecutor/PackedKernelArgumentArray.h"
 #include "streamexecutor/PlatformDevice.h"
-#include "streamexecutor/Utils/Error.h"
 
 #include "llvm/ADT/Optional.h"
 #include "llvm/ADT/Twine.h"

Removed: parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h?rev=281117&view=auto
==============================================================================
--- parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h (original)
+++ parallel-libs/trunk/streamexecutor/include/streamexecutor/Utils/Error.h (removed)
@@ -1,215 +0,0 @@
-//===-- Error.h - Error handling --------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// Error types used in the public API and internally in StreamExecutor.
-///
-/// StreamExecutor's error handling is based on the types streamexecutor::Error
-/// and streamexecutor::Expected<T>.
-///
-///
-/// \section error The Error Class
-///
-/// The Error class either represents success or contains an error message
-/// describing the cause of the error. Error instances are created by calling
-/// Error::success for successes or make_error for errors.
-///
-/// \code{.cpp}
-/// Error achieveWorldPeace() {
-///   if (WorldPeaceAlreadyAchieved) {
-///     return Error::success();
-///   } else {
-///     return make_error("Can't someone else do it?");
-///   }
-/// }
-/// \endcode
-///
-/// Error instances are implicitly convertible to bool. Error values convert to
-/// true and successes convert to false. Error instances must have their boolean
-/// values checked or they must be moved before they go out of scope, otherwise
-/// their destruction will cause the program to abort with a warning about an
-/// unchecked Error.
-///
-/// If the Error represents success, then checking the boolean value is all that
-/// is required, but if the Error represents a real error, the Error value must
-/// be consumed. The function consumeAndGetMessage is the way to extract the
-/// error message from an Error and consume the Error at the same time, so
-/// typical error handling will first check whether there was an error and then
-/// extract the error message if so. Here is an example:
-///
-/// \code{.cpp}
-/// if (Error E = achieveWorldPeace()) {
-///   printf("An error occurred: %s\n", consumeAndGetMessage(E).c_str());
-///   exit(EXIT_FAILURE):
-/// }
-/// \endcode
-///
-/// It is also common to simply pass an error along up the call stack if it
-/// cannot be handled in the current function.
-///
-/// \code{.cpp}
-/// Error doTask() {
-///   if (Error E = achieveWorldPeace()) {
-///     return E;
-///   }
-///   ...
-/// }
-/// \endcode
-///
-/// There is also a function consumeError that consumes an error value without
-/// fetching the error message. This is useful when we want to ignore an error.
-///
-/// The dieIfError function is also provided for quick-and-dirty error handling.
-///
-///
-/// \section expected The Expected Class
-///
-/// The Expected<T> class either represents a value of type T or an Error.
-/// Expected<T> has one constructor that takes a T value and another constructor
-/// that takes an Error rvalue reference, so Expected instances can be
-/// constructed either from values or from errors:
-///
-/// \code{.cpp}
-/// Expected<int> getMyFavoriteInt() {
-///   int MyFavorite = 42;
-///   if (IsThereAFavorite) {
-///     return MyFavorite;
-///   } else {
-///     return make_error("I don't have a favorite");
-///   }
-/// }
-/// \endcode
-///
-/// Expected<T> instances are implicitly convertible to bool and are true if
-/// they contain a value and false if they contain an error. Note that this is
-/// the opposite convention of the Error type conversion to bool, where true
-/// meant error and false meant success.
-///
-/// If the Expected<T> instance is not an error, the stored value can be
-/// obtained by using operator*. If access to members of the value are desired
-/// instead of the value itself, operator-> can be used as well.
-///
-/// Expected<T> instances must have their boolean value checked or they must be
-/// moved before they go out of scope, otherwise they will cause the program to
-/// abort with a warning about an unchecked error. If the Expected<T> instance
-/// contains a value, then checking the boolean value is all that is required,
-/// but if it contains an Error object, that Error object must be handled by
-/// calling Expected<T>::takeError() to get the underlying error.
-///
-/// Here is an example of the use of an Expected<T> value returned from a
-/// function:
-///
-/// \code{.cpp}
-/// Expected<int> ExpectedInt = getMyFavoriteInt();
-/// if (ExpectedInt) {
-///   printf("My favorite integer is %d\n", *ExpectedInt);
-/// } else {
-///   printf("An error occurred: %s\n",
-///     consumeAndGetMessage(ExpectedInt.takeError()));
-///   exit(EXIT_FAILURE);
-/// }
-/// \endcode
-///
-/// The following snippet shows some examples of how Errors and Expected values
-/// can be passed up the stack if they should not be handled in the current
-/// function.
-///
-/// \code{.cpp}
-/// Expected<double> doTask3() {
-///   Error WorldPeaceError = achieveWorldPeace();
-///   if (!WorldPeaceError) {
-///     return WorldPeaceError;
-///   }
-///
-///   Expected<martian> ExpectedMartian = getMyFavoriteMartian();
-///   if (!ExpectedMartian) {
-///     // Must extract the error because martian cannot be converted to double.
-///     return ExpectedMartian.takeError():
-///   }
-///
-///   // It's fine to return Expected<int> for Expected<double> because int can
-///   // be converted to double.
-///   return getMyFavoriteInt();
-/// }
-/// \endcode
-///
-/// The getOrDie function is also available for quick-and-dirty error handling.
-///
-///
-/// \section llvm Relation to llvm::Error and llvm::Expected
-///
-/// The streamexecutor::Error and streamexecutor::Expected classes are actually
-/// just their LLVM counterparts redeclared in the streamexectuor namespace, but
-/// they should be treated as separate types, even so.
-///
-/// StreamExecutor does not support any underlying llvm::ErrorInfo class except
-/// the one it defines internally for itself, so a streamexecutor::Error can be
-/// thought of as a restricted llvm::Error that is guaranteed to hold a specific
-/// error type.
-///
-/// Although code may compile if llvm functions used to handle these
-/// StreamExecutor error types, it is likely that code will lead to runtime
-/// errors, so it is strongly recommended that only the functions from the
-/// streamexecutor namespace are used on these StreamExecutor error types.
-///
-//===----------------------------------------------------------------------===//
-
-#ifndef STREAMEXECUTOR_UTILS_ERROR_H
-#define STREAMEXECUTOR_UTILS_ERROR_H
-
-#include <cstdio>
-#include <cstdlib>
-#include <memory>
-#include <string>
-
-#include "llvm/Support/Error.h"
-
-namespace streamexecutor {
-
-using llvm::consumeError;
-using llvm::Error;
-using llvm::Expected;
-using llvm::Twine;
-
-/// Makes an Error object from an error message.
-Error make_error(Twine Message);
-
-/// Consumes the input error and returns its error message.
-///
-/// Assumes the input was created by the make_error function above.
-std::string consumeAndGetMessage(Error &&E);
-
-/// Extracts the T value from an Expected<T> or prints an error message to
-/// stderr and exits the program with code EXIT_FAILURE if the Expected<T> is an
-/// error.
-///
-/// This function and the dieIfError function are provided for applications that
-/// are OK with aborting the program if an error occurs, and which don't have
-/// any special error logging needs. Applications with different error handling
-/// needs will likely want to declare their own functions with similar
-/// signatures but which log error messages in a different way or attempt to
-/// recover from errors instead of aborting the program.
-template <typename T> T getOrDie(Expected<T> &&E) {
-  if (!E) {
-    std::fprintf(stderr, "Error extracting an expected value: %s.\n",
-                 consumeAndGetMessage(E.takeError()).c_str());
-    std::exit(EXIT_FAILURE);
-  }
-  return std::move(*E);
-}
-
-/// Prints an error message to stderr and exits the program with code
-/// EXIT_FAILURE if the input is an error.
-///
-/// \sa getOrDie
-void dieIfError(Error &&E);
-
-} // namespace streamexecutor
-
-#endif // STREAMEXECUTOR_UTILS_ERROR_H

Modified: parallel-libs/trunk/streamexecutor/lib/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/lib/CMakeLists.txt?rev=281118&r1=281117&r2=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/lib/CMakeLists.txt (original)
+++ parallel-libs/trunk/streamexecutor/lib/CMakeLists.txt Fri Sep  9 18:33:58 2016
@@ -3,12 +3,11 @@ macro(add_se_library name)
   set_target_properties(${name} PROPERTIES FOLDER "streamexecutor libraries")
 endmacro(add_se_library)
 
-add_subdirectory(Utils)
-
 add_se_library(
     streamexecutor
     Device.cpp
     DeviceMemory.cpp
+    Error.cpp
     Kernel.cpp
     KernelSpec.cpp
     PackedKernelArgumentArray.cpp
@@ -16,9 +15,6 @@ add_se_library(
     PlatformDevice.cpp
     PlatformManager.cpp
     Stream.cpp
-
-    LINK_LIBS
-      utils
     )
 
 install(TARGETS streamexecutor DESTINATION lib)

Copied: parallel-libs/trunk/streamexecutor/lib/Error.cpp (from r281091, parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp)
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/lib/Error.cpp?p2=parallel-libs/trunk/streamexecutor/lib/Error.cpp&p1=parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp&r1=281091&r2=281118&rev=281118&view=diff
==============================================================================
--- parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp (original)
+++ parallel-libs/trunk/streamexecutor/lib/Error.cpp Fri Sep  9 18:33:58 2016
@@ -12,7 +12,7 @@
 ///
 //===----------------------------------------------------------------------===//
 
-#include "streamexecutor/Utils/Error.h"
+#include "streamexecutor/Error.h"
 
 #include "llvm/ADT/StringRef.h"
 

Removed: parallel-libs/trunk/streamexecutor/lib/Utils/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/lib/Utils/CMakeLists.txt?rev=281117&view=auto
==============================================================================
--- parallel-libs/trunk/streamexecutor/lib/Utils/CMakeLists.txt (original)
+++ parallel-libs/trunk/streamexecutor/lib/Utils/CMakeLists.txt (removed)
@@ -1,3 +0,0 @@
-add_se_library(
-  utils
-  Error.cpp)

Removed: parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp
URL: http://llvm.org/viewvc/llvm-project/parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp?rev=281117&view=auto
==============================================================================
--- parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp (original)
+++ parallel-libs/trunk/streamexecutor/lib/Utils/Error.cpp (removed)
@@ -1,71 +0,0 @@
-//===-- Error.cpp - Error handling ----------------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// Types for returning recoverable errors.
-///
-//===----------------------------------------------------------------------===//
-
-#include "streamexecutor/Utils/Error.h"
-
-#include "llvm/ADT/StringRef.h"
-
-namespace {
-
-// An error with a string message describing the cause.
-class StreamExecutorError : public llvm::ErrorInfo<StreamExecutorError> {
-public:
-  StreamExecutorError(llvm::StringRef Message) : Message(Message.str()) {}
-
-  void log(llvm::raw_ostream &OS) const override { OS << Message; }
-
-  std::error_code convertToErrorCode() const override {
-    llvm_unreachable(
-        "StreamExecutorError does not support conversion to std::error_code");
-  }
-
-  std::string getErrorMessage() const { return Message; }
-
-  static char ID;
-
-private:
-  std::string Message;
-};
-
-char StreamExecutorError::ID = 0;
-
-} // namespace
-
-namespace streamexecutor {
-
-Error make_error(Twine Message) {
-  return llvm::make_error<StreamExecutorError>(Message.str());
-}
-
-std::string consumeAndGetMessage(Error &&E) {
-  if (!E) {
-    return "success";
-  }
-  std::string Message;
-  llvm::handleAllErrors(std::move(E),
-                        [&Message](const StreamExecutorError &SEE) {
-                          Message = SEE.getErrorMessage();
-                        });
-  return Message;
-}
-
-void dieIfError(Error &&E) {
-  if (E) {
-    std::fprintf(stderr, "Error encountered: %s.\n",
-                 streamexecutor::consumeAndGetMessage(std::move(E)).c_str());
-    std::exit(EXIT_FAILURE);
-  }
-}
-
-} // namespace streamexecutor




More information about the Parallel_libs-commits mailing list